gpt4 book ai didi

Javascript 求和 foreach 内的目录大小

转载 作者:太空宇宙 更新时间:2023-11-04 03:02:46 25 4
gpt4 key购买 nike

每次调用 forEach 时,我都无法增加变量。

目标是通过对目录中所有文件的大小求和来获取目录的总大小。我遇到的问题是正确理解应该将变量放在哪里,以便计算出正确的大小。

事实上,目前计算的大小是单个文件的大小,而不是总大小。我缺少什么?

function walk(dir) {
let
n = 0,
size = 0,
totalSize = 0;

function walk(dir) {

fs.readdirSync(dir).forEach(file => {

let fullPath = path.join(dir, file);


totalSize += size; //Total size ; should it be here ?
++n;

console.log(size);

if (fs.lstatSync(fullPath).isDirectory()) {
--n;
walk(fullPath);
} else {
size = fs.statSync(fullPath).size; // Get size of file
listFiles.write(size + "\n"); // Write file size into copyList.xml
}

});
}
return walk(dir);
}

当前输出:

340747217
18607
283163346
25332
287107119
22240
281853153
219100996
204879388
210185951
26321
278784426
21899
22695
238503727
29866
266805926
21697
285134805

最佳答案

您在错误的地方计算了总大小,并且计算方式也是错误的。 size = + size 不会将新尺寸添加到现有值中。使用新变量来累计总大小。(totalSize)

function walk(dir) {
let n = 0,
size = 0;
totalSize = 0;

function walk(dir) {
fs.readdirSync(dir).forEach(file => {
let fullPath = path.join(dir, file);
++n;

if (fs.lstatSync(fullPath).isDirectory()) {
--n;
walk(fullPath);
} else {
size = fs.statSync(fullPath).size; // Get size of file
totalSize += size; // Calculate total size
listFiles.write(size + "\n"); // Write file size into copyList.xml
}
});
}
return walk(dir);
}

关于Javascript 求和 foreach 内的目录大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50305633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com