Functions > FileDirDisk >


FileOpen

Ouvre un fichier en lecture ou en écriture.

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

Paramètres

filename Nom du fichier à ouvrir.
mode [optionnel] Mode d'ouverture du fichier.
Doit être une combinaison des éléments suivants:
    $FO_READ (0) = Mode lecture (par défaut)
    $FO_APPEND (1) = Mode écriture (ajoute à la fin du fichier)
    $FO_OVERWRITE (2) = Mode écriture (efface le contenu précédent)
    $FO_CREATEPATH (8) = Crée la structure des répertoires si elle n'existe pas (Voir Remarques).
    $FO_BINARY (16) = Force le mode binaire (Voir Remarques).
    $FO_UNICODE or $FO_UTF16_LE (32) = Utilise l'Unicode UTF16 Little Endian en mode lecture-écriture.
    $FO_UTF16_BE (64) = Utilise l'Unicode UTF16 Big Endian en mode lecture-écriture.
    $FO_UTF8 (128) = Utilise l'Unicode UTF8 (avec BOM) en mode lecture-écriture.
    $FO_UTF8_NOBOM (256) = Utilise l'Unicode UTF8 (sans BOM) en mode lecture-écriture.
    $FO_ANSI (512) = Utilise l'ANSI en mode lecture-écriture.
    $FO_UTF16_LE_NOBOM (1024) = Utilise l'Unicode UTF16 Little Endian (sans BOM) en mode lecture-écriture.
    $FO_UTF16_BE_NOBOM (2048) = Utilise l'Unicode UTF16 Big Endian (sans BOM) en mode lecture-écriture.
    $FO_FULLFILE_DETECT (16384) = Lors de l'ouverture en lecture et sans BOM, utilise le fichier entier pour déterminer s'il est UTF8 ou UTF16. Si ce n'est pas utilisé, alors seulement la partie au début du fichier (64Ko) est testée pour des raisons de performance.
Le chemin du dossier doit déjà exister (sauf en utilisant le mode $FO_CREATEPATH - Voir Remarques).

Les constantes sont définies dans FileConstants.au3

Valeur de retour

Succès: Retourne le handle du fichier pour utilisation ultérieure avec les fonctions fichier.
Échec: Retourne -1 si une erreur est rencontrée.

Remarques

Le handle du fichier doit être fermé avec la fonction FileClose().

Un fichier peut ne pas s'ouvrir en raison des droits d'accès ou d'attributs.

Le mode par défaut lors de l'écriture de texte est UTF8 (sans BOM) - Utilisez les commutateurs du mode Unicode pour changer cela. Lors de la lecture sans commutateur explicite du mode Unicode, le contenu du fichier est examiné et une proposition est faite pour savoir si le fichier est UTF8, UTF16 ou ANSI. Si, lors de l'ouverture d'un fichier existant, ce fichier a une BOM, alors la BOM sera utilisée en rapport avec les commutateurs passés du mode Unicode.

L'ouverture d'un fichier en mode écriture, crée le fichier s'il n'existe pas. Les répertoires ne sont pas créés à moins d'utiliser les commutateurs corrects.

Lors de la lecture et de l'écriture par le même "handle" de fichier, la fonction FileSetPos() doit être utilisée pour mettre à jour la position courante du pointeur de fichier.

Un fichier peut être lu comme données binaires (octets) en utilisant FileOpen() avec le flag binaire.

Consultez "Support Unicode" pour une description détaillée.

En relation

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

Exemples

Exemple 1

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

Example()

Func Example()
    ; Crée une constante locale avec le chemin du fichier qui sera lu/écrit.
    Local Const $sFilePath = @TempDir & "\FileOpen.txt"

    ; Crée un fichier temporaire pour y lire les données.
    If Not FileWrite($sFilePath, "Exemple d'utilisation de FileOpen.") Then
        MsgBox($MB_SYSTEMMODAL, "", "Une erreur est survenue lors de l'écriture dans le fichier temporaire.")
        Return False
    EndIf

    ; Ouvre le fichier en lecture et stocke le handle dans une variable.
    Local $hFileOpen = FileOpen($sFilePath, $FO_READ)
    If $hFileOpen = -1 Then
        MsgBox($MB_SYSTEMMODAL, "", "Une erreur est survenue pendant la lecture du fichier.")
        Return False
    EndIf

    ; Lit le contenu du fichier à l'aide du handle retournée par FileOpen.
    Local $sFileRead = FileRead($hFileOpen)

    ; Ferme le handle retourné par FileOpen.
    FileClose($hFileOpen)

    ; Affiche le contenu du fichier.
    MsgBox($MB_SYSTEMMODAL, "", "Contenu du fichier:" & @CRLF & $sFileRead)

    ; Supprime le fichier temporaire.
    FileDelete($sFilePath)
EndFunc   ;==>Example

; Crée un fichier.
Func FileCreate($sFilePath, $sString)
    ; Crée une variable pour stocker une valeur booléenne.
    Local $bReturn = True 

    ; Si FileWrite retourne 1 ce sera Vrai sinon Faux.
    If FileExists($sFilePath) = 0 Then $bReturn = (FileWrite($sFilePath, $sString) = 1)

     ; Retourne la valeur booléenne Vrai ou Faux, suivant la valeur de retour de FileWrite.
    Return $bReturn 
EndFunc   ;==>FileCreate


Exemple 2

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

Example()

Func Example()
    ; Crée une constante locale avec le chemin du fichier qui sera lu/écrit.
    Local Const $sFilePath = _WinAPI_GetTempFileName(@TempDir)

    ; Ouvre le fichier pour un accès en lecture/écriture.
    Local $hFileOpen = FileOpen($sFilePath, $FO_READ + $FO_OVERWRITE)
    If $hFileOpen = -1 Then
        MsgBox($MB_SYSTEMMODAL, "", "Une erreur est survenue lors de la lecture du fichier.")
        Return False
    EndIf

    ; Écrit quelques données.
    FileWrite($hFileOpen, "Un peu de texte pour montrer que le handle a été ouvert avec un accès en lecture-écriture." & @CRLF)

    ; Obtient la position actuelle dans le fichier.
    Local $iFilePos = FileGetPos($hFileOpen)

    ; Maintenant, positionne le curseur sur le début.
    FileSetPos($hFileOpen, 0, $FILE_BEGIN)

    ; Affiche le contenu du fichier.
    MsgBox($MB_SYSTEMMODAL, "", FileRead($hFileOpen))

    ; Maintenant, positionne le curseur sur la position précédente.
    FileSetPos($hFileOpen, 0, $iFilePos)

    ; Écrit quelques données de plus.
    FileWrite($hFileOpen, "Un peu de texte en plus.")

    ; Positionne le curseur sur la position précédente.
    FileSetPos($hFileOpen, 0, $FILE_BEGIN)

    ; Affiche le contenu du fichier.
    MsgBox($MB_SYSTEMMODAL, "", FileRead($hFileOpen))

    ; Ferme le handle retourné par FileOpen.
    FileClose($hFileOpen)

    ; Supprime le fichier temporaire.
    FileDelete($sFilePath)

    Return True
EndFunc   ;==>Example