从本地文件中读取混合类型

时间:2011-10-16 12:59:11

标签: javascript html5 filereader

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

1 个答案:

答案 0 :(得分:0)

您可以使用.webkitSlice / .mozSlice对文件进行切片,然后对不同的范围使用readAsText和readAsArrayBuffer。