Чтение смешанных типов из локального файла - PullRequest
1 голос
/ 16 октября 2011

Я пытаюсь прочитать тип файла, который имеет смесь целых чисел, чисел с плавающей запятой и строк, используя 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: список аргументов имеет неправильный тип», поэтому ему не нравится мой Uint8Array в качестве параметра.

Есть ли лучший способ читать сразу несколько символов? FileReader#readAsText() читает весь файл, но не дает доступа ни к одному из двоичных методов.

1 Ответ

0 голосов
/ 30 декабря 2011

Вы можете нарезать файл с помощью .webkitSlice / .mozSlice, а затем использовать readAsText и readAsArrayBuffer для разных диапазонов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...