Liest den Inhalt einer Datei in eine Variable.
FileRead, AusgabeVar, DateiName
Name der Ausgabevariable, in der die ermittelten Daten gespeichert werden sollen. AusgabeVar wird leer gemacht, wenn ein Problem auftritt, z. B. wenn die Datei "in Benutzung" ist oder nicht existiert (in diesem Fall wird ErrorLevel auf 1 gesetzt). Die Ausgabevariable wird auch leer gemacht, wenn DateiName eine leere Datei ist (in diesem Fall wird ErrorLevel auf 0 gesetzt).
Name der Datei, die gelesen werden soll. Wenn kein absoluter Pfad angegeben ist, wird die Datei im A_WorkingDir-Verzeichnis vermutet.
Optionen: Direkt vor dem Dateinamen können null oder mehr der folgenden Zeichenketten angegeben werden. Die Optionen müssen jeweils mit einem Leer- oder Tabulatorzeichen voneinander getrennt werden. Zum Beispiel: *t *m5000 C:\Log-Dateien\200601.txt
.
*c: Lädt eine Datei aus ClipboardAll oder anderen binären Daten. Alle anderen Optionen werden ignoriert, wenn *c vorhanden ist.
*m1024: Lässt man diese Option weg, wird die komplette Datei geladen, es sei denn, es mangelt an Speicherkapazität, dann wird eine Fehlermeldung angezeigt und der Thread beendet (kann aber mit Try umgangen werden). Ansonsten können Sie 1024 mit einer dezimalen oder hexadezimalen Anzahl von Bytes ersetzen. Wenn die Datei die angegebene Größe überschreitet, wird nur ihr beginnender Teil geladen.
Hinweis: Dies kann dazu führen, dass die letzte Zeile nur mit einem einzelnen CR-Zeichen (`r) endet, statt mit dem CR-LF-Paar (`r`n).
*t: Ersetzt alle CR-LF-Paare (`r`n) mit einem LF-Zeichen (`n). Diese Übersetzung reduziert jedoch die Leistung und ist in der Regel nicht notwendig. Zum Beispiel wäre ein Text, der `r`n enthält, bereits im richtigen Format, um in ein Gui-Edit-Steuerelement eingefügt werden zu können. Ebenso stellt FileAppend automatisch fest, ob ein CR-LF-Paar (`r`n) vorhanden ist, wenn eine neue Datei geöffnet wird; der Befehl weiß, jedes `r`n so zu lassen wie es ist, anstatt es in `r`r`n zu übersetzen. Die folgende parsende Schleife wird korrekt funktionieren, egal ob eine Zeile mit `r`n oder nur mit `n endet: Loop, Parse, MeineDateiInhalt, `n, `r
.
*Pnnn: [AHK_L 42+]: Überschreibt die via FileEncoding gesetzte Standardcodierung, wobei nnn ein Zeichensatzidentifikator sein muss.
[v1.1.04+]: Dieser Befehl ist in der Lage, bei Misserfolg eine Ausnahme auszulösen. Weitere Informationen finden Sie unter Laufzeitfehler.
ErrorLevel wird auf 0 gesetzt, wenn die Datei erfolgreich geladen wurde. Ansonsten wird ErrorLevel auf 1 gesetzt, wenn ein Problem aufgetreten ist. Probleme sind zum Beispiel: 1) Datei existiert nicht; 2) Datei ist gesperrt oder nicht zugreifbar; 3) Das System hat nicht genügend Arbeitsspeicher, um die Datei zu laden.
A_LastError wird auf das Ergebnis der Systemfunktion GetLastError() gesetzt.
Je nach Datei, Parametern und Standardeinstellungen wird FileRead den Inhalt der Datei eventuell als Text interpretieren und ihn in die vom Skript verwendete native Codierung konvertieren. Diese Konvertierung kann zu Problemen führen, wenn die Datei binäre Daten enthält, außer in folgenden Fällen:
Beachten Sie, dass nach dem Einlesen der Daten in AusgabeVar nur der Text vor der ersten binären Null (falls vorhanden) von den meisten AutoHotkey-Befehlen und -Funktionen "gesehen" wird. Der gesamte Inhalt ist jedoch weiterhin vorhanden und kann mit erweiterten Methoden wie NumGet() abgerufen werden.
Mit FileOpen() in Verbindung mit File.RawRead() oder File.ReadNum() können binäre Daten erfasst werden, ohne die komplette Datei in den Speicher einlesen zu müssen.
FileRead ist deutlich performanter als eine dateilesende Schleife, wenn es darum geht, alles oder einen großen Teil einer Datei in den Speicher zu laden.
Eine Datei größer als 1 GB bewirkt, dass ErrorLevel auf 1 gesetzt und AusgabeVar leer gemacht wird, es sei denn, die *m-Option ist vorhanden, dann wird nur der beginnende Teil der Datei geladen.
FileRead ignoriert #MaxMem. Wenn Sie Bedenken haben, dass die Datei zu viel Arbeitsspeicher verbraucht, können Sie zunächst ihre Größe mit FileGetSize überprüfen.
Die FileOpen-Funktion bietet eine weitaus fortschrittlichere Funktionalität als FileRead. Sie kann zum Beispiel Daten an einer bestimmten Stelle in der Datei lesen oder schreiben, ohne zuerst die gesamte Datei in den Arbeitsspeicher lesen zu müssen. Eine Liste aller Features finden Sie unter File-Objekt.
FileEncoding, FileOpen()/File-Objekt, dateilesende Schleife, FileReadLine, FileGetSize, FileAppend, IniRead, Sort, UrlDownloadToFile
Liest eine Textdatei und speichert ihren kompletten Inhalt in AusgabeVar.
FileRead, AusgabeVar, C:\Meine Dokumente\Meine Datei.txt
Sortiert schnell den Inhalt einer Datei.
FileRead, Inhalt, C:\Adressenliste.txt if not ErrorLevel ; Erfolgreich geladen. { Sort, Inhalt FileDelete, C:\Adressenliste (alphabetisch).txt FileAppend, %Inhalt%, C:\Adressenliste (alphabetisch).txt Inhalt := "" ; Gibt den Speicher frei. }