我拥有的最小文件大于850k行,每行的长度不明。目标是在浏览器中从此文件读取n
行。完全阅读不会发生。阅读大文本文件的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
行...
通过使用Uint8Array to string in Javascript也可以从那里做:
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',
*“......但是这不应该的问题” *什么在天堂的名字使你认为不要紧?如果没有索引行的开始位置*和*在给定索引处递增读取文件的能力,那绝对是重要的。 –
@ T.J.Crowder我通过澄清更新了我的问题,也许我应该删除该陈述,您是对的! – gsamaras
这里需要更多的上下文。您正在使用HTML和JavaScript。这是在Web浏览器中运行的JavaScript吗?或者,这个JavaScript是作为HTML POST之类的回应执行的吗? – Alan