javascript - Node.js 读写文件行

标签 javascript node.js

我尝试使用 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/

相关文章:

javascript - 将元素移动到父元素的末尾

node.js - Sails 在两个模型中插入相同的对象

javascript - 当我启用布局时,为什么 sails.js 会引发如此多的浏览器控制台错误?

node.js - 使用 Node.js 和 Cloud9 IDE 的套接字服务器

javascript - 在reactJs中选择/取消选择所有复选框

javascript - 首先或之前验证 Controller 逻辑

javascript - 有什么方法可以用 socket.io 发送函数吗?

javascript - 使用knockout js绑定(bind)下拉值

node.js - 如何在 Typescript/Webpack 的 Bitbucket 管道中增加 NodeJS 堆(--max-old-space-size)?

javascript - 在 process.stdin 的可读流中插入条件语句