Große Textdatei mit NullBytes einlesen
Verfasst: 24.04.2012 11:51
Servus,
Ich muss für ein kleines projekt große TextDateien (logs) einlesen, leider können diese des öfteren NullBytes enthalten.
Soweit zu bunt, zur Zeit löse ich das so:
Jedoch ist das bei Dateien mit vielen NullBytes oder sehr großen (die files haben max 20MB) quälend langsam.
Kennt jemand von ech eine schnellere Methode?
Beste Grüße,
Deluxe0321
Ich muss für ein kleines projekt große TextDateien (logs) einlesen, leider können diese des öfteren NullBytes enthalten.
Soweit zu bunt, zur Zeit löse ich das so:
Code: Alles auswählen
Procedure.s FileToString(File.s)
Protected *memory, String.s, Bom.i
If FileSize(File.s) > 0
FileID.i = ReadFile(#PB_Any,File.s)
Bom.i = ReadStringFormat(FileID.i)
If FileID.i
*memory = AllocateMemory(FileSize(File.s))
If *memory
ReadData(FileID.i,*memory,FileSize(File.s))
;ONLY ASCII for now
Repeat
String.s = PeekS(*memory,FileSize(File.s),Bom.i)
If MemorySize(*memory) > Len(String.s)
PokeC(*memory + Len(String.s),1)
Debug "ZeroByte"
Else
Break
EndIf
ForEver
FreeMemory(*memory)
EndIf
ProcedureReturn String.s
EndIf
EndIf
EndProcedure
Kennt jemand von ech eine schnellere Methode?
Beste Grüße,
Deluxe0321