要实现遍历文件夹并统计文件大小,我们需要使用nodejs提供的fs模块来操作文件系统,并使用递归函数遍历文件夹。以下是具体步骤:
步骤1 - 引入模块
首先需要引入fs模块,它可以方便地对文件和文件夹进行操作。我们还需要引入path模块,它可以处理路径。
const fs = require('fs');
const path = require('path');
步骤2 - 定义递归函数
递归函数是遍历文件夹的核心。下面是一个简单的递归函数示例。
function getFolderSize(dir) {
let size = 0;
fs.readdirSync(dir).forEach(file => {
const filePath = path.join(dir, file);
const stat = fs.statSync(filePath);
if (stat.isDirectory()) {
size += getFolderSize(filePath);
} else {
size += stat.size;
}
});
return size;
}
递归函数的参数是要遍历的文件夹路径。在函数内部,我们使用fs.readdirSync方法读取文件夹的内容,并使用forEach方法遍历返回的结果。对于每一个文件或子文件夹,我们使用fs.statSync方法获取其详细信息,包括大小、创建时间等。如果是子文件夹,我们递归调用getFolderSize函数求其大小。
步骤3 - 调用递归函数
调用getFolderSize函数时,传入要遍历的文件夹路径。例如:
const folderSize = getFolderSize('D:/My Documents');
console.log('The size of the folder is:', folderSize, 'bytes');
这样就可输出所需遍历文件夹的大小。
示例1 - 遍历本地文件夹
下面是一个简单的示例,演示如何遍历本地文件夹,输出每个文件的大小。
const fs = require('fs');
const path = require('path');
function walk(dir, fileCallback, error) {
fs.readdir(dir, (err, files) => {
if (err) return error(err);
files.forEach(file => {
const filepath = path.join(dir, file);
fs.stat(filepath, (err, stats) => {
if (err) return error(err);
if (stats.isDirectory()) {
walk(filepath, fileCallback, error);
} else {
fileCallback(filepath, stats);
}
});
});
});
}
walk('./test', (file, stats) => {
console.log(`${file} - ${stats.size}`);
}, (err) => {
console.log(`Error: ${err}`);
});
在上面的例子中,walk函数封装了遍历文件夹的任务。它接受3个参数:
- dir:要遍历的文件夹路径;
- fileCallback:对于每个文件,执行该回调函数;
- error:发生错误时执行该回调函数。
其中,fileCallback函数接受两个参数:文件路径和文件信息对象。我们在该函数中输出每个文件的大小。
示例2 - 显示文件夹大小
下面是一个稍微复杂一些的示例,演示如何在遍历的同时累加文件夹大小,最终输出文件夹大小。
const fs = require('fs');
const path = require('path');
function getFolderSize(dir) {
let size = 0;
fs.readdirSync(dir).forEach(file => {
const filePath = path.join(dir, file);
const stat = fs.statSync(filePath);
if (stat.isDirectory()) {
size += getFolderSize(filePath);
} else {
size += stat.size;
}
});
return size;
}
const folderSize = getFolderSize('./test');
console.log(`The size of the folder is ${folderSize} bytes`);
在上面的例子中,getFolderSize函数返回文件夹的大小。我们在函数内部使用forEach方法遍历文件夹中的全部文件,并使用fs.statSync方法获取每个文件的详细信息。如果是子文件夹,我们递归调用getFolderSize方法累加其大小。
最后,我们调用getFolderSize函数,传入文件夹路径。getFolderSize函数返回文件夹大小,并赋值给变量folderSize。最后,我们将变量folderSize输出到控制台,显示文件夹的大小。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nodejs实现遍历文件夹并统计文件大小 - Python技术站