我试图逐行读取文件,然后使用Node.js将其输出到另一个文件。
我的问题是由于Node.js的异步特性,行的顺序有时会混乱。
例如,我的输入文件就像:第1行第2行第3行
但是输出文件可能像:第1行第3行第2行
下面是我的代码。
var fs = require("fs"); var index = 1; fs.readFileSync('./input.txt').toString().split('\n').forEach( function (line) { console.log(line); fs.open("./output.txt", 'a', 0666, function(err, fd) { fs.writeSync(fd, line.toString() + "\n", null, undefined, function(err, written) { })}); } );
任何想法将不胜感激,谢谢。
如果要编写同步代码,请仅使用同步功能:
var fs = require("fs"); fs.readFileSync('./input.txt').toString().split('\n').forEach(function (line) { console.log(line); fs.appendFileSync("./output.txt", line.toString() + "\n"); });
对于异步方法,您可以编写类似
var fs = require('fs'), async = require('async'), carrier = require('carrier'); async.parallel({ input: fs.openFile.bind(null, './input.txt', 'r'), output: fs.openFile.bind(null, './output.txt', 'a') }, function (err, result) { if (err) { console.log("An error occured: " + err); return; } carrier.carry(result.input) .on('line', result.output.write) .on('end', function () { result.output.end(); console.log("Done"); }); });