我正在尝试使用Javascript读取包含整数,浮点数和字符串混合的文件类型。
然后使用File API拖放文件,将其读作数组缓冲区并用DataView
包装。这需要处理数字类型,但我必须使用自己的方法来获取文本。
DataView.prototype.getAscii = function(byteOffset, byteLength)
{
var bytes = new Array(byteLength);
for (var i = 0; i < byteLength; i++) {
bytes[i] = this.getUint8(byteOffset + i);
}
return String.fromCharCode.apply(null, bytes);
}
它运行良好,但我担心读取大文件的单个字节的速度。据推测,类型化数组可以与普通数组互换使用,所以我尝试了这个:
DataView.prototype.getAscii = function(byteOffset, byteLength)
{
var bytes = new Uint8Array(this.buffer, byteOffset, byteLength);
return String.fromCharCode.apply(null, bytes);
}
我收到“TypeError:Function.prototype.apply:Arguments list has wrong type”消息,因此它不喜欢我的Uint8Array
作为参数。
有没有更好的方法一次阅读多个角色? FileReader#readAsText()
读取整个文件,但不允许访问任何二进制方法。
答案 0 :(得分:0)
您可以使用.webkitSlice / .mozSlice对文件进行切片,然后对不同的范围使用readAsText和readAsArrayBuffer。