目前我使用如下模式来读取一系列文件的前 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 个字符感兴趣,而这种方法会读取整个文件,浪费大量内存和时间。如何快速遍历文件,只需快速查看第一个字符?
编辑: slice() 是答案,谢谢 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);
}