我正在尝试一次读取一行大文件。我在Quora上发现了一个与该主题有关的问题,但我缺少一些联系以使整个组件组合在一起。
var Lazy=require("lazy");
new Lazy(process.stdin)
.lines
.forEach(
function(line) {
console.log(line.toString());
}
);
process.stdin.resume();
我想弄清楚的一点是,如何一次从文件而不是如本示例中的STDIN读取一行。
我试过了:
fs.open('./VeryBigFile.csv', 'r', '0666', Process);
function Process(err, fd) {
if (err) throw err;
// DO lazy read
}
但它不起作用。我知道,在紧急情况下,我可能会回过头来使用PHP之类的东西,但是我想弄清楚这一点。
我不认为其他答案会起作用,因为该文件比我在其上运行的具有内存的服务器大得多。
if (line.length==1 && line[0] == 48) special(line);
node
的API文档中稍作修改github.com/nodejs/node/pull/4609
fs.readSync()
。您可以将二进制八位位组读取到缓冲区中,但是没有一种简单的方法来处理部分UTF-8或UTF-16字符,而无需先检查缓冲区,然后再将其转换为JavaScript字符串并扫描EOL。该Buffer()
类型没有像本机字符串那样丰富的功能集来对其实例进行操作,但是本机字符串不能包含二进制数据。在我看来,缺少一种从任意文件句柄读取文本行的内置方法,是node.js中的真正空白。