Как прочитать огромный текстовый файл через javascript или jquery? - PullRequest
0 голосов
/ 23 февраля 2012

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

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

Ответы [ 4 ]

2 голосов
/ 23 февраля 2012

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

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

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

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

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

1 голос
/ 07 июня 2016

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

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

http://polyakoff.ucoz.net/

0 голосов
/ 23 февраля 2012

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();
}
0 голосов
/ 23 февраля 2012
fs.read(fd, buffer, offset, length, position, [callback])

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

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

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

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

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

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

...