gpt4 book ai didi

javascript - nodejs同步逐行读取大文件?

转载 作者:IT老高 更新时间:2023-10-28 23:22:59 29 4
gpt4 key购买 nike

我有一个大文件 (utf8)。我知道 fs.createReadStream 可以创建流来读取大文件,但不同步。所以我尝试使用 fs.readSync,但读取的文本像 "迈�" 一样被破坏。

var fs = require('fs');
var util = require('util');
var textPath = __dirname + '/people-daily.txt';
var fd = fs.openSync(textPath, "r");
var text = fs.readSync(fd, 4, 0, "utf8");
console.log(util.inspect(text, true, null));

最佳答案

对于大文件,readFileSync 可能不方便,因为它将整个文件加载到内存中。一种不同的同步方法是迭代调用 readSync,一次读取少量数据,并在出现的行时对其进行处理。以下代码实现了这种方法,并从文件“test.txt”中一次同步处理一行:

var fs = require('fs');
var filename = 'test.txt'

var fd = fs.openSync(filename, 'r');
var bufferSize = 1024;
var buffer = new Buffer(bufferSize);

var leftOver = '';
var read, line, idxStart, idx;
while ((read = fs.readSync(fd, buffer, 0, bufferSize, null)) !== 0) {
leftOver += buffer.toString('utf8', 0, read);
idxStart = 0
while ((idx = leftOver.indexOf("\n", idxStart)) !== -1) {
line = leftOver.substring(idxStart, idx);
console.log("one line read: " + line);
idxStart = idx + 1;
}
leftOver = leftOver.substring(idxStart);
}

关于javascript - nodejs同步逐行读取大文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7545147/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com