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