2017-08-21 83 views
0

试图从一个文件写入另一个文件。当我控制台日志我可以看到.write被一直调用。转换后的文件被创建,但是当我打开文件时它是空的。控制台日志显示我可以看到正确的线路数据。我在这里做错了什么?Readline.write创建空白文件

代码如下片段:

var fileRebuilder = readline.createInterface({ 
    input: fs.createReadStream('./' + directory + file), 
    output: fs.createWriteStream('./' + directory + 'Converted' + file), 
}); 
var lineRead = 0; 
fileRebuilder.on('line', function (line) { 
    lineRead++; 
    if (linesForRemoval.indexOf(lineRead) > -1) { 
    } else { 
     fileRebuilder.write(line); 
    } 
}).on('close', function() { 
    fileRebuilder.close(); 
}); 

回答

1

您需要:

fileRebuilder.output.write(line + "\n"); 

工作例如:

const readline = require('readline'); 
const fs = require('fs'); 
function FileRebuilder(directory,file,linesForRemoval){ 
    const fileRebuilder = readline.createInterface({ 
     input: fs.createReadStream(directory + '/' + file), 
     output: fs.createWriteStream(directory + '/converted-' + file), 
    }); 
    console.log("[fileRebuilder]","start"); 
    var lineRead = 0; 
    fileRebuilder.on('line', function (line) { 
     lineRead++; 
     if (linesForRemoval.indexOf(lineRead) > -1) { 
     console.log("@[ line",lineRead,"]","removing!"); 
     } else { 
     console.log("@[ line",lineRead,"]","writing!"); 
     fileRebuilder.output.write(line + "\n"); 
     } 
    }).on('close', function() { 
    console.log("[fileRebuilder]","closed"); 
    fileRebuilder.close(); 
    }); 
} 

FileRebuilder(__dirname,'sample.txt',[4,8]); 
+0

谢谢EMX! – DimlyAware