2017-02-17 139 views
0

我遇到了管理文件的问题。我有一些内容会每天更新,我想解析一些文件中的数据。但是我遇到的问题我不想触摸我已经做过的文件。我如何跟踪已经完成的工作以及下次开始的位置。使用nodejs跟踪文件

回答

1

假设文件在本地文件系统上。 1.阅读lastModifiedTime。 2.任何时候lastModifiedTime与之前的lastModifiedTime都不同,用于文件更新lastModifiedTime,然后解析并读取文件

定期运行步骤2。 (在代码中60秒)

var fs = require("fs"); 

var filePaths = ['file_name_1', 'file_name_2']; 
var mtimes = {}; 
var reloadTimes = 60000; 
var execFunction = function(){ 
    for(var i = 0; i < filePaths.length; i++) { 
     parseFile(filePaths[i], mtimes[filePaths[i]]); 
    } 
}; 
setInterval(execFunction, reloadTimes); 
var parseFile = function(fileName, lastModifiedTime) { 
    fs.stat(fileName, function(err, fd) { 
     if(lastModifiedTime == undefined || fd.mtime.getTime() !== lastModifiedTime.getTime()) { 
      mtimes[fileName] = fd.mtime; 
      // read the file and parse it 
     } 
    });  
}; 
execFunction(); 
+0

非常感谢,应该工作。由于某种原因,我们的代码没有运行 – Slygoth

+0

@Slygoth你得到的错误是什么?我假设你用完整路径替换了文件名。在reloadTimes毫秒结束之前,第一次执行不会发生。 – Ashwin

+0

好吧,非常感谢 – Slygoth