Funktionreferenz


FileOpen

Beschreibung anzeigen in

Öffnet eine Datei zum Lesen oder Schreiben.

FileOpen ( "filename" [, mode = 0] )

Parameter

filename Dateiname der zu öffnenden Datei.
mode [optional] Modus in dem die Datei geöffnet werden soll.
Kann auch eine Kombination aus folgenden sein:
    $FO_READ (0) = Lesemodus (Standard)
    $FO_APPEND (1) = Schreibmodus (anhängend an das Dateiende)
    $FO_OVERWRITE (2) = Schreibmodus (löschen des vorherigen Inhaltes)
    $FO_CREATEPATH (8) = Anlegen der Verzeichnisstruktur, wenn sie nicht existiert (siehe Bemerkungen).
    $FO_BINARY (16) = Erzwingt den Binärmodus (Siehe Bemerkungen)
    $FO_UNICODE or $FO_UTF16_LE (32) = Verwendet Unicode-UTF16 mit Little-Endian-Kodierung im Lese- und Schreibmodus
    $FO_UTF16_BE (64) = Verwendet Unicode-UTF16 mit Big-Endian-Kodierung im Lese- und Schreibmodus.
    $FO_UTF8 (128) = Verwendet Unicode-UTF8 Kodierung im Lese- und Schreibmodus.
    $FO_UTF8_NOBOM (256) = Verwendet Unicode-UTF8 (ohne BOM) im Lese- und Schreibmodus.
    $FO_ANSI (512) = Verwendet ANSI im Lese- und Schreibmodus.
    $FO_UTF16_LE_NOBOM (1024) = Verwendet Unicode UTF16 Little Endian (ohne BOM) im Lese- und Schreibmodus.
    $FO_UTF16_BE_NOBOM (2048) = Verwendet Unicode UTF16 Big Endian (ohne BOM) im Lese- und Schreibmodus.
    $FO_UTF8_FULL (16384) = Wenn zum Lesen geöffnet wird und kein BOM verfügbar ist, so wird auf die komplette Datei UTF8 oder UTF16 Erkennung angewendet. Falls dies nicht verwendet wird, so wird aus Performancegründen nur der Anfang der Datei (bis zu 64KB) untersucht.
Der Verzeichnispfad muss bereits vorhanden sein (außer mode $FO_CREATEPATH wird verwendet - siehe Bemerkungen).

Die Konstanten sind in FileConstants.au3 definiert.

Rückgabewert

Erfolg: Ein Handle auf die Datei, das für die folgenden Funktionen benötigt wird.
Fehler: -1, wenn ein Fehler aufgetaucht ist.

Bemerkungen

Das Dateihandle muss mit der FileClose() Funktion wieder geschlossen werden.
Das Öffnen einer Datei kann möglicherweise fehlschlagen, durch fehlende Zugriffsrechte oder Attribute.
Der Standardmodus beim Schreiben von Text ist UTF8 (ohne BOM). Um dies zu ändern ist der Unicode-Modus-Flag zu verwenden. Wenn Unicode-Dateien ohne ein explizites Unicode-Modus-Flag gelesen werden, so wird der Inhalt der Datei untersucht und geraten ob die Datei UTF8, UTF16 oder ANSI ist. Wenn eine existierende Datei geöffnet wird und diese Datei hat ein BOM so wird das BOM unabhängig vom Unicode-Modus-Flag übergeben.
Wird eine Datei im Schreibmodus (write mode) geöffnet, so wird die Datei erstellt, falls sie noch nicht existiert. Verzeichnisse werden nicht erstellt, außer das entsprechende Flag wird verwendet.
Falls mit dem gleichen Dateihandle gelesen und geschrieben wird, so muss die FileSetPos() Funktion verwendet werden um die aktuelle Dateiposition zu aktualisieren.
Eine Datei kann binär (byteweise) ausgelesen werden wenn FileOpen() mit dem Binärflag aufgerufen wird.

Siehe "Unicode Support" für eine detailierte Beschreibung.

Verwandte Funktionen

FileClose, FileFlush, FileGetPos, FileRead, FileReadLine, FileSetPos, FileWrite, FileWriteLine

Beispiel

Beispiel 1

#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 FileOpen.") Then
        MsgBox($MB_SYSTEMMODAL, "", "Es ist während des Schreibens 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 des Schreibens der temporären Datei ein Fehler aufgetreten.")
        Return False
    EndIf

    ; Liest den Inhalt der Datei durch die Verwendung des von FileOpen zurückgegebenen Handles.
    Local $sFileRead = FileRead($hFileOpen)

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

    ; Zeigt den Inhalt der Datei.
    MsgBox($MB_SYSTEMMODAL, "", "Inhalt der Datei:" & @CRLF & $sFileRead)

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

Beispiel 2

#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)

    ; Öffnet eine Datei für den Lese/Schreib-Zugriff.
    Local $hFileOpen = FileOpen($sFilePath, $FO_READ + $FO_OVERWRITE)
    If $hFileOpen = -1 Then
        MsgBox($MB_SYSTEMMODAL, "", "Es ist während des Lesens der temporären Datei ein Fehler aufgetreten.")
        Return False
    EndIf

    ; Schreibt etwas Text.
    FileWrite($hFileOpen, "Dies ist etwas Text um zu zeigen, dass das Handle mit Lese/Schreib-Zugriff geöffnet wurde." & @CRLF)

    ; Ermittelt die aktuelle Position in der Datei.
    Local $iFilePos = FileGetPos($hFileOpen)

    ; Nun wird die Position des Starts festgelegt.
    FileSetPos($hFileOpen, 0, $FILE_BEGIN)

    ; Zeigt den Inhalt der Datei.
    MsgBox($MB_SYSTEMMODAL, "", FileRead($hFileOpen))

    ; Die Position wird auf die vorherige Position gesetzt.
    FileSetPos($hFileOpen, 0, $iFilePos)

    ; Schreibt nochmals etwas Text.
    FileWrite($hFileOpen, "Dies ist etwas zusätzlicher Text.")

    ; Die Position wird auf die vorherige Position gesetzt.
    FileSetPos($hFileOpen, 0, $FILE_BEGIN)

    ; Zeigt den Inhalt der Datei.
    MsgBox($MB_SYSTEMMODAL, "", FileRead($hFileOpen))

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

    ; Löscht die temporäre Datei.
    FileDelete($sFilePath)

    Return True
EndFunc   ;==>Example