我尝试使用 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");
});
});
关于javascript - Node.js 读写文件行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11986350/