Oto jak ja” d podejść do problemu. Ten kod ustawia liczbę linii, które mają być odczytywane w czasie, a następnie otwiera plik do odczytu i ustawia tablicę. Mimo że nie skończyliśmy czytać pliku, dodajemy do niego linię do myArray
.
Kiedy trafiamy na wielokrotność 20 linii przeczytanych, informujemy o tym i robimy, co trzeba, z tymi 20 liniami (w moim przypadku, właśnie wysłałem je na ekran, oddzielone średnikami).
Następnie resetujemy tablicę, aby była pusta ponownie i powtarzamy, aż cały plik zostanie odczytany, a następnie wyprowadzamy końcową partię linii (w przeciwnym razie zostaną one zignorowane, ponieważ robimy tylko coś z partiami o wartości 20 w przykładzie).
Option Explicit
Const LINES_TO_READ = 20
Dim iLines, iTotalLines
Dim oFso : Set oFso = CreateObject("Scripting.FileSystemObject")
Dim oFile : Set oFile = oFso.OpenTextFile("C:\temp\mytextfile.txt", 1)
Dim myArray()
ReDim myArray(0)
iLines = 0
iTotalLines = 0
While Not oFile.AtEndOfStream
myArray(UBound(myArray)) = oFile.ReadLine
iLines = iLines + 1
ReDim Preserve myArray(UBound(myArray)+1)
If iLines Mod LINES_TO_READ = 0 Then
WScript.Echo iLines & " read now."
' do anything you like with the elements of myArray here before we reset it to empty
WScript.Echo Join(myArray, ";")
' reset array to be totally empty again
ReDim myArray(0)
End If
Wend
WScript.Echo "Final Lines: " & Join(myArray, ";")
WScript.Echo "Total lines in file: " & iLines
Lepiej odfiltrować wymagane linie, a następnie załadować cały plik do pamięci. – Lankymart
ok ... mogę odczytać pierwsze 20 wierszy pliku tekstowego. jak mam przejść do następnych 20 linii i tak dalej, aż plik się skończy ..... jak mam go zapętlić? –