Funktionreferenz


FileReadLine

Beschreibung anzeigen in

Liest eine Textzeile aus einer zuvor geöffneten Textdatei.

FileReadLine ( "filehandle/filename" [, line = 1] )

Parameter

filehandle/filename Das Handle der Datei, wie es von einem früheren Aufruf von FileOpen() zurückgegeben wurde. Alternativ kann ein String mit dem Dateinamen als erster Parameter verwendet werden.
line [optional] Die Zeilennummer, die gelesen werden soll. Die erste Zeile einer Textdatei hat die Nummer 1 (ungleich 0). Die letzte Zeile ist -1.

Rückgabewert

Erfolg: Eine Textzeile.
Fehler: Setzt das @error Flag auf ungleich null
@error: 1 = die Datei wurde nicht im Lesemodus (read mode) geöffnet oder ein anderer Fehler ist aufgetreten.
-1 = das Dateiende wurde erreicht.

Bemerkungen

Gibt eine Textzeile zurück. Die am Zeilenende eingelesenen Zeilenumbrüche (@CR oder @LF) werden automatisch entfernt.

Wenn ein Dateihandle an die Funktion übergeben wird und keine Zeilennummer angegeben wird, wird die "nächste" Zeile gelesen - für eine neu geöffnete Datei ist dies die erste Zeile.
Wenn Zeilen in einer Schleife gelesen werden, empfiehlt es sich, die Zählung automatisch zu erhöhen und nicht den Parameter "line" zu verwenden, da dies AutoIt dazu zwingt, die Datei jedes Mal von Anfang an erneut zu lesen, was die Ausführungszeit bei großen Dateien erheblich verlangsamt.

Wenn ein Dateiname an die Funktion übergeben wird, wird die Datei während des Aufrufs geöffnet und geschlossen, was die Ausführung erheblich verlangsamt, insbesondere beim Lesen mehrerer Zeilen.
Da die Datei nach jedem Aufruf geschlossen wird, gibt es keine automatische "nächste" Zeilenerhöhung und der "line" -Parameter muss beim Lesen von Zeilen in einer Schleife verwendet werden.
Es ist zu beachten, dass dies die Ausführung verlangsamt, wenn AutoIt die Datei jedes Mal neu liest.

Die Verwendung von Dateihandles und -namen sollte nicht vermischt werden. So sollte man z.B. vermeiden, eine Datei mit FileOpen() zu öffnen und dann in dieser Funktion einen Dateinamen verwenden. Es sind entweder Handles oder Dateinamen zu benutzen - nicht beides.

Sowohl ANSI als auch UTF16/UTF8 formatierte Texte können gelesen werden - Siehe FileOpen() für mehr Details.

Verwandte Funktionen

FileGetPos, FileOpen, FileRead, FileSetPos, FileWrite, FileWriteLine, IniRead

Beispiel

#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIFiles.au3>

Example()

Func Example()
    ; Erstellt eine Konstante im lokalen Bereich des Dateipfads der gelesen bzw. in den geschrieben werden soll.
    Local Const $sFilePath = _WinAPI_GetTempFileName(@TempDir)

    ; Erstellt eine temporäre Datei von der Dateien gelesen werden sollen.
    If Not FileWrite($sFilePath, "Dies ist ein Beispiel für die Verwendung von FileReadLine.") Then
        MsgBox($MB_SYSTEMMODAL, "", "Es ist während dem schreiben der temporären Datei ein Fehler aufgetreten.")
        Return False
    EndIf

    ; Öffnet die Datei zum lesen und speichert das Handle in einer Variable.
    Local $hFileOpen = FileOpen($sFilePath, $FO_READ)
    If $hFileOpen = -1 Then
        MsgBox($MB_SYSTEMMODAL, "", "Es ist während dem lesen der Datei ein Fehler aufgetreten.")
        Return False
    EndIf

    ; Liest die erste Zeile der Datei. Dabei wird das von FileOpen zurückgegebene Handle verwendet.
    Local $sFileRead = FileReadLine($hFileOpen, 1)

    ; Schließt das Handle welches von FileOpen zurückgegeben wurde.
    FileClose($hFileOpen)

    ; Zeigt die erste Zeile der Datei.
    MsgBox($MB_SYSTEMMODAL, "", "Erste Zeile der Datei:" & @CRLF & $sFileRead)

    ; Löscht die temporären Datei.
    FileDelete($sFilePath)
EndFunc   ;==>Example