Как прочитать огромный текстовый файл через javascript или jquery?

Как я могу читать огромный текстовый файл построчно через javascript или jquery? Я не могу прочитать все и разделить на массив, потому что это потребует много памяти. Я просто хочу транслировать это...

РЕДАКТИРОВАТЬ В качестве заметки я работаю над расширением Google Chrome, чтобы решения с ActiveX fso не работали в этом браузере. Есть другие идеи?

4 ответа

Наконец, HTML5 предоставляет стандартный способ взаимодействия с локальными файлами через спецификацию File API. В качестве примера своих возможностей, File API можно использовать для создания миниатюр предварительного просмотра изображений по мере их отправки на сервер или для того, чтобы приложение могло сохранить ссылку на файл, пока пользователь не в сети. Кроме того, вы можете использовать клиентскую логику, чтобы убедиться, что mimetype загружаемого файла соответствует его расширению или ограничить размер загружаемого файла.

В спецификации предусмотрено несколько интерфейсов для доступа к файлам из "локальной" файловой системы: 1.Файл - отдельный файл; предоставляет информацию только для чтения, такую ​​как имя, размер файла, mimetype и ссылку на дескриптор файла. 2.FileList - массивоподобная последовательность объектов File. (Подумайте или перетащите каталог файлов с рабочего стола). 3.Blob - Позволяет разделить файл на байтовые диапазоны.

При использовании в сочетании с вышеуказанными структурами данных интерфейс FileReader может использоваться для асинхронного чтения файла с помощью привычной обработки событий JavaScript. Таким образом, можно отслеживать ход чтения, отлавливать ошибки и определять, когда загрузка завершена. Во многом API-интерфейсы напоминают модель событий XMLHttpRequest.

Примечание. На момент написания этого руководства в Chrome 6.0 и Firefox 3.6 поддерживались необходимые API для работы с локальными файлами. Начиная с Firefox 3.6.3, метод File.slice() не поддерживается.

http://www.html5rocks.com/en/tutorials/file/dndfiles/

Виджет Lazy Text View предназначен для отображения текста на веб-странице. Ключевая особенность в том, что он не загружает весь текст в память браузера, а отображает только фрагмент (кадр) файла. Это позволяет отображать большие, очень большие, огромные тексты.

Виджет обеспечивает пользовательский интерфейс для отображения текста и требует наличия источника данных на стороне сервера. Вы должны реализовать серверный компонент самостоятельно, его логика довольно проста. Когда виджету требуется следующий фрагмент текста, он запрашивает у сервера (используя POST-метод) следующий фрагмент.

http://polyakoff.ucoz.net/

fs.read(fd, buffer, offset, length, position, [callback])

Считать данные из файла, указанного в fd.

буфер - это буфер, в который будут записаны данные.

смещение - это смещение в буфере, с которого начинается запись.

длина - это целое число, указывающее количество байтов для чтения.

position - целое число, указывающее, с чего начать чтение в файле. Если позиция равна нулю, данные будут считаны из текущей позиции файла.

http://nodejs.org/docs/v0.4.8/api/fs.html

TextStream и Scripting.FileSystemObject

; object = ObjectOpen("Scripting.FileSystemObject") ; WIL syntax
; ObjectClose(object)                               ; WIL syntax
;
; TextStream = object.CreateTextFile(filename[, overwrite[, unicode]])      ; Creates a file as a TextStream
; TextStream = object.OpenTextFile(filename[, iomode[, create[, format]]])  ; Opens a file as a TextStream
;
; TextStream.Close                       ; Close a text stream.
;
; TextStream.ReadAll                     ; Read the entire stream into a string.
; TextStream.ReadLine                    ; Read an entire line into a string.
; TextStream.Read (n)                    ; Read a specific number of characters into a string.
; 
; TextStream.Write (string)              ; Write a string to the stream.
; TextStream.WriteLine                   ; Write an end of line to the stream.
; TextStream.WriteLine (string)          ; Write a string and an end of line to the stream.
; TextStream.WriteBlankLines (n)         ; Write a number of blank lines to the stream.
; 
; TextStream.SkipLine                    ; Skip a line.
; TextStream.Skip (n)                    ; Skip a specific number of characters.
; 
; TextStream.Line                        ; Current line number.
; TextStream.Column                      ; Current column number.
; 
; TextStream.AtEndOfLine                 ; Boolean Value. Is the current position at the end of a line?
; TextStream.AtEndOfStream               ; Boolean Value. Is the current position at the end of the stream?
; -------------------------------------------------------------------------------------------------------------------------------

Образец кода:

function ReadFiles()
{
  var fso, f1, ts, s;
  var ForReading = 1;
  fso = new ActiveXObject("Scripting.FileSystemObject");
  f1 = fso.CreateTextFile("c:\\testfile.txt", true);
  // Write a line.
  Response.Write("Writing file <br>");
  f1.WriteLine("Hello World");
  f1.WriteBlankLines(1);
  f1.Close();
  // Read the contents of the file.
  Response.Write("Reading file <br>");
  ts = fso.OpenTextFile("c:\\testfile.txt", ForReading);
  s = ts.ReadLine();
  Response.Write("File contents = '" + s + "'");
  ts.Close();
}
Другие вопросы по тегам