現在、一連のファイルの最初の 3 文字を読み取るために、次のようなパターンを使用しています。
var files = e.dataTransfer.files;
for (var i = 0, f; f = files[i]; i++) {
var fr = new FileReader();
fr.onload = function(e) {
var first_three_chars = e.target.result.substr(0,3);
}
fr.readAsText(f);
}
問題は、ファイルの最初の 3 文字だけに関心があるのに対し、この方法ではファイル全体を読み取るため、大量のメモリと時間を浪費することです。最初の文字をすばやく確認するだけで、ファイルをすばやく反復処理するにはどうすればよいですか?
編集:スライス()が答えでした、ありがとうsshen。これが私がそれをした方法です:
var files = e.dataTransfer.files;
for (var i = 0, f; f = files[i]; i++) {
var fr = new FileReader();
fr.onloadend = function(e) {
if (e.target.readyState == FileReader.DONE) {
var first_three_chars = e.target.result;
}
};
var blob = f.slice(0, 3);
fr.readAsText(blob);
}