我确实遇到了需要处理大量csv文件的问题。为此,我需要逐行阅读这些文件。
我创建了以下基本设置:
const testFolder = '/path/to/files';
var adapterFile = 'file1.csv';
var adapterFile2 = 'file2.csv';
const fs = require('fs');
const readline = require('readline');
const path = require('path');
const Promise = require('bluebird');
const glob = require("glob");
const winston = require('winston');
var fileProcessor = function(){};
var processingCount = 0;
var rls = [];
var streams = [];
var logfile = path.join(__dirname, 'test.log');
var logger = new (winston.Logger)({
transports: [
new (winston.transports.Console)(),
new (winston.transports.File)({ filename: logfile })
]
});
fileProcessor.prototype.processFile = function(filePath) {
streams[processingCount] = fs.createReadStream(filePath);
rls[processingCount] = readline.createInterface({
input: streams[processingCount]
});
rls[processingCount].on('line', function (line) {
logger.info('in on line');
});
rls[processingCount].on('close', function (line) {
logger.info('in on close');
});
processingCount++;
}
var start = function start() {
fs.readdir(testFolder, function(err, files) {
files
.forEach(function(file) {
if (file.indexOf('file') != -1) {
var fileProzzi = new fileProcessor();
fileProzzi.processFile(testFolder + file);
console.log(rls.length);
}
})
})
}
var fileProzzi = new fileProcessor();
fileProzzi.processFile(testFolder + adapterFile);
var fileProzzi = new fileProcessor();
fileProzzi.processFile(testFolder + adapterFile2);
// start();
如果我手动启动过程,您可以看到上面的一切都按预期工作。但如果调用start()
来处理所有文件,则永远不会读取文件。
有人能告诉我我做错了吗?
提前致谢。
答案 0 :(得分:0)
为什么要在启动函数中检查文件名'MyTrigger'?
我将该条件更改为(file.indexOf('MyTrigger')== -1),如果不需要,一切正常或更好地删除该条件。
你遗漏了一些问题。