FileRead


Liest den Inhalt einer Datei in eine Variable.

FileRead, OutputVar, Filename

Parameter

OutputVar Der Name der Variable, in die der Dateiinhalt gespeichert werden soll. Bei einem Problem wird OutputVar gelöscht; wenn z. B. die Datei gerade "benutzt" wird, nicht existiert (in diesem Fall wird ErrorLevel auf 1 gesetzt) oder Filename eine leere Datei ist (in diesem Fall wird ErrorLevel auf 0 gesetzt).
Filename

Der Name der zu lesenden Datei. Wird in dem Quellverzeichnis des Scripts (oder relativ dazu) angenommen, sofern kein absoluter Pfad angegeben ist.

Options: 0 oder mehr der folgenden Strings dürfen vor dem Dateinamen vorkommen. Trennen Sie die Optionen mit einem einzelnen Leerzeichen oder Tabulator voneinander. Beispiel: *t *m5000 C:\LogDateien\200601.txt

*c: Lädt eine ClipboardAll-Datei. Mit *c werden alle anderen Optionen ignoriert.

*m1024[v1.0.43.03+]: Ohne diese Option wird die komplette Datei geladen, sofern sie nicht größer als 1 GB ist; in diesem Fall wird sie überhaupt nicht geladen. Andernfalls ersetzen Sie 1024 durch eine dezimale oder hexadezimale Zahl Anzahl von Bytes zwischen 1 und 1073741824 (1 GB). Wenn die Datei größer ist, wird nur der erste Teil geladen. Achtung: Dies kann dazu führen, dass die letzte Zeile mit einem einzelnen Carriage Return (`r) statt mit `r`n endet.

*t: Ersetzt jedes Carriage Return & Linefeed (`r`n) mit Linefeed (`n). Allerdings kostet diese Übersetzung Geschwindigkeit und ist üblicherweise nicht erforderlich. Text, der `r`n enthält, hat schon das richtige Format, um einem Gui Edit control hinzugefügt zu werden. In gleicher Weise erkennt FileAppend beim Öffnen einer neuen Datei, ob `r`n vorkommt und schreibt jedes `r`n so, wie es ist, anstatt es nach `r`r`n zu übersetzen. Auch das folgende LoopParse arbeitet korrekt, unabhängig davon, ob jede Zeile mit `r`n oder nur `n endet: Loop, parse, MeinDateiInhalt, `n, `r

ErrorLevel

ErrorLevel wird bei Erfolg auf 0 gesetzt. Es wird auf 1 gesetzt, wenn ein Problem auftrat; wie z. B.: 1) Datei existiert nicht; 2) Datei bzw. der Zugriff ist gesperrt; 3) Zum Laden der Datei ist nicht genug Speicherplatz vorhanden.

Anmerkungen

Um die komplette Datei oder ihren größten Teil in den Speicher zu laden, ist FileRead sehr viel besser geeignet als LoopReadFile.

Bei einer Datei mit mehr als 1 GB wird ErrorLevel auf 1 gesetzt und OutputVar leer zurückgeliefert, sofern nicht die *m-Option gesetzt ist, bei der der erste Teil der Datei geladen wird.

#MaxMem wird von FileRead nicht beachtet. Falls zu viel Speicherplatz benutzt werden könnte, prüfen Sie die Dateigröße vorher mit FileGetSize.

Wenn die angegebene Datei binäre Nullen enthält (die in reinen Textdateien niemals vorkommen), wird von den AutoHotkey-Befehlen und -Funktionen nur der Text vor der ersten binären Null "gesehen". Allerdings ist der komplette Inhalt in OutputVar vorhanden; auf ihn kann mit erweiterten Methoden wie z. B. dem Adress-Operator (&) zugregriffen werden; z. B.: *(&Var + 1000)

FileRead kann zum schnellen Sortieren eines Dateiinhaltes benutzt werden, wie im folgenden Beispiel:

FileRead, DateiInhalt, C:\AdressListe.txt
if not ErrorLevel ; Erfolgreich geladen.
{
Sort, DateiInhalt
FileDelete, C:\AdressListe (alphabetisch).txt
FileAppend, %DateiInhalt%, C:\AdressListe (alphabetisch).txt
DateiInhalt = ; Speicherplatz freigeben.
}

Siehe auch

LoopReadFile, FileReadLine, FileGetSize, FileAppend, IniRead, Sort, UrlDownloadToFile

Beispiel

FileRead, OutputVar, C:\Dokumente\MeineDatei.txt