我擁有的最小文件大於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