3

我正在使用 nodejs 'readline' 逐行读取文件。我正在逐行读取 .csv 文件并将其转换为 JSON。我从写“{”开始,然后每行都被解析、格式化并以“,”结尾。我想对最后一行做一些与前面几行不同的事情,即。以 '}' 而不是 ',' 结束。如何检测当前行是最后一行。

    var readline = require("readline");
    var fs = require("fs");

    var read_in = readline.createInterface({
        input: fs.createReadStream(file),
        crlfDelay: Infinity
    });

    var write_out = fs.createWriteStream("intermediate.json")

    write_out.write("{");

    read_in.on("line", function (line) {
        var a = line.split(",");
        var b = "\"" + a[0].trim() + "\" : \"" + a[1] + "\",\r\n"
        write_out.write(b);
    })
    read_in.on("close", function () {
        write_out.write("}"); // leaves an incorrectly formatted JSON file
    })
4

1 回答 1

0

使用 csv 执行此操作的一种有趣方式,但它应该适用于任何类型的文档。

文件内容

one,apple
two,banana
three,orange

代码

// Load document
const originalStream = fs.readFileSync(`my_document.csv`);

// Convert document to hex
const hexStream = new Buffer.from(streambase).toString('hex')
// Output 
// 6f6e652c6170706c650a74776f2c62616e616e610a74687265652c6f72616e6765
// New lines are separated by 0a so we can assume thats the start of a new line

// Retrieve last line in hex format
const lastLineHex = hexStream.split("0a").splice(-1)[0]
// Output
// 74687265652c6f72616e6765

const convertLastLineBackToUtf = new Buffer.from(lastLineHex, 'hex').toString();
// Output
// three,orange

要检查它们是否在最后一行,您可以将其与最终输出进行比较。

于 2020-05-06T00:34:08.017 回答