Как устранить переполнение буфера при чтении больших текстовых файлов размером более 2 ГБ? - PullRequest
0 голосов
/ 31 марта 2011

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

var ForReading = 1;
var TriStateFalse = 0;
var strFileData;

var fso, objFile, objTS;
fso = new ActiveXObject("Scripting.FileSystemObject");
objFile = fso.GetFile("Sample2GBFile");

strFileData = objTS.Read(objFile.Size);
if(strFileData .indexOf("String to search") > 0 )
{
wShShell.Echo("Found...");
} 

В приведенном выше коде я получаю переполнение буфера, поскольку файл 2 ГБ не может поместиться в буфер. Пожалуйста, помогите, как решить эту проблему.

Ответы [ 2 ]

1 голос
/ 31 марта 2011

Чтение меньших частей файла, проверка строки, пустой буфер, больше информации.Просто убедитесь, что вы учитываете длину строки при чтении фрагмента, чтобы не разрезать его и, таким образом, пропустить попадание.

0 голосов
/ 31 марта 2011

Зацикливание на строке вместо чтения всего файла

http://techsupt.winbatch.com/ts/T000001033F64.html

:test4
; read single chars from a line, count chars.
testfile = "d:\temp\test.ascii.txt"
MyFile = fso.OpenTextFile(testfile, ForReading)       ; Open a file as a TextStream
ThisLine = ""
While !MyFile.AtEndOfLine                             ; Is the current position at the end of a line? 
   ThisColumnCount = MyFile.Column                    ; Current column number.
   ThisLine        = StrCat(ThisLine, MyFile.Read(1)) ; Read a specific number of characters into a string.
   NextColumnCount = MyFile.Column                    ; Current column number.
EndWhile
MyFile.Close                                          ; Close a text stream.
ObjectClose(MyFile)

:test5
; read lines, count lines.
testfile = "d:\temp\test.ascii.txt"
MyFile = fso.OpenTextFile(testfile, ForReading)       ; Open a file as a TextStream
While !MyFile.AtEndOfStream                           ; Is the current position at the end of the stream?
   ThisLineCount = MyFile.Line                        ; Current line number.
   ThisLine      = MyFile.ReadLine                    ; Read an entire line into a string.
   NextLineCount = MyFile.Line                        ; Current line number.
EndWhile
MyFile.Close                                          ; Close a text stream.
ObjectClose(MyFile)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...