我拥有的最小文件有超过850k行,每一行长度未知。目标是在浏览器中读取n
行。完全读取它是不可能的。
这是HTML代码:<input type="file" name="file" id="file">
和我的JS代码:
var n = 10;
var reader = new FileReader();
reader.onload = function(progressEvent) {
// Entire file
console.log(this.result);
// By lines
var lines = this.result.split('\n');
for (var line = 0; line < n; line++) {
console.log(lines[line]);
}
};
显然,这里的问题在于它尝试先读取整个文件,然后按换行符拆分文件。所以无论n
是多少,它都会尝试读取整个文件,当文件很大时最终什么都没有读取。
我该怎么做呢?
注:如果我能够console.log()
每一行读取的内容,我愿意删除整个函数并重新开始。
*“每一行的长度未知”-> 意味着文件看起来像这样:
(0, (1, 2))
(1, (4, 5, 6))
(2, (7))
(3, (8))
编辑:
最好的方法就是像filereader api on big files那样,但我不知道如何修改它来读取文件的n
行…
同时,使用Javascript中的Uint8Array转字符串,可以从那里开始实现:
var view = new Uint8Array(fr.result);
var string = new TextDecoder("utf-8").decode(view);
console.log("Chunk " + string);
但这可能无法将最后一行作为整体读取,那么你后面要如何确定这些行呢?例如,下面是它所打印的内容:
((7202), (u'11330875493', u'2554375661'))
((1667), (u'9079074735', u'6883914476',