从本地文件读取混合类型

Reading mixed types from a local file

本文关键字:混合 类型 读取 文件      更新时间:2023-09-26

我正在尝试使用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()读取整个文件,但不允许访问任何二进制方法。

您可以使用. webkitslice/对文件进行切片。