Node 'readline' 如何检测当前行是文件中的最后一行
Node 'readline' how todetect that current line is last line in a file
我正在用 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
})
一种使用 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
要检查它们是否在最后一行,您可以将其与最终输出进行比较。
我正在用 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
})
一种使用 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
要检查它们是否在最后一行,您可以将其与最终输出进行比较。