求教,怎么用异步方式计算一个文件夹下总文件数
如果是同步方式,一个递归很容易解决这个问题,异步方式怎么实现?
同步方式代码:
var fs = require('fs');
var getFileNum = function(fileName) {
var num = 0;
var stats = fs.statSync(fileName);
if (stats.isDirectory()) {
var files = fs.readdirSync(fileName);
for ( var i = 0; i < files.length; i++) {
num += getFileNum(fileName + '\\' + files[i]);
}
} else if (stats.isFile()) {
num += 1;
}
return num;
}
var num = getFileNum('E:\\');
console.log(num);
6 回复
var exec = require('child_process').exec;
exec('find * -type f | wc -l', function(error, stdout, stderr) {
console.log(stdout);
})
一楼正解 调用系统命令最省事儿
还是没解决这个问题,只是用系统命令取代的代码实现,如果换个系统,或代码再加点功能,比如说,计算文件夹下所有文件的总行数,这个代码又要全部写了
total=0
cd $1
for dir in `find * -type f`; do
len=`wc -l < $dir`
if [ $? -ne 0 ] ; then
echo "\n \033[32mError: $dir\033[0m\n\n"
else
echo "seraching $dir $len"
total=$(( $total+$len ))
fi
done
echo "Total Lines: $total"
统计行数可以这么写,每个平台都是有shell命令的,JS要做系统层的脚本还真没有bash顺手。
同意楼上的,干这些事用bash才是正路
这么做是简单,但那怎么兼容不同的操作系统?