【发布时间】:2016-12-07 10:45:52
【问题描述】:
我创建了一个 NodeJS(电子)代码,用于读取特定目录和子目录中的所有文件。 我不想使用太多的高清资源,所以我在文件夹之间使用了 5ms 的延迟。
现在我的问题。我想要如果我的节点进程停止?我希望能够从它停止时继续。我该怎么做?
换句话说:如何在遍历所有文件和文件夹时保持当前状态的索引,以便我可以从停止时继续遍历。
谢谢
我的代码:
var walkAll=function(options){
var x=0
walk(options.dir,function(){})
function walk(dir,callback) {
var files=fs.readdirSync(dir);
var stat;
async.eachSeries(files,function(file,next){
file=dir +'/' + file
if (dir.match(/Recycle/)) return next()
if (dir.match(/.git/)) return next()
if (dir.match(/node_modules/)) return next()
fs.lstat(file,function(err,stat){
if(err) return next()
if(stat.mode==41398) return next()
if (stat.isDirectory()) {
setTimeout(function(file){
walk(file,next)
}.bind(null,file),5)
}
else{
x++
if(false || x % 1000===0) console.log((new Date().valueOf()-start)/1000,x,file)
next()
}
})
},function(){
callback()
})
}
}
walkAll({
dir:'c:/',
delay:1000
});
【问题讨论】:
-
第一个问题是如何获得索引的持久性。借助
eachSeries,可以推断出索引,它将像“循环”一样工作,因此您可以递增变量。
标签: node.js electron node-webkit