方案:解壓到本地的大小 / zip檔案總大小(解壓後的) ,得出解壓進度
先得出解壓後的檔案大小,然後解壓到本地
const AdmZip = require("adm-zip"); const JSZip = require('jszip'); // 指定ZIP檔案的路徑 const admZip = new AdmZip("D:\\Users\\whr4220\\Downloads\\test (3).rar"); const zip = new JSZip(); // 解壓目標目錄 const extractPath = './downloads' // 獲取ZIP檔案中所有檔案的列表 const entries = admZip.getEntries(); // console.log(admZip, entries) // 初始化已解壓檔案的總大小 let totalSize = 0; // 遍歷所有檔案,計算總大小 entries.forEach(entry => { totalSize += entry.header.size; }); console.log('解壓後的大小', totalSize) // 解壓檔案到指定目錄 admZip.extractAllTo(extractPath, true); console.log('解壓完成');
獲取指定目錄的大小,得出當前解壓了多少
const fs = require('fs'); const path = require('path'); //獲取指定目錄的大小 function getFolderSize(folderPath) { let totalSize = 0; fs.readdirSync(folderPath).forEach(file => { const filePath = path.join(folderPath, file); const stats = fs.statSync(filePath); if (stats.isFile()) { totalSize += stats.size; } else if (stats.isDirectory()) { totalSize += getFolderSize(filePath); // 遞迴呼叫 } }); return totalSize; } // 使用函式 const size = getFolderSize('./downloads'); console.log('大小', size);