Functions > FileDirDisk >


FileSetPos

Définit la position courante du pointeur d'un fichier.

FileSetPos ( "filehandle", offset, origin )

Paramètres

filehandle Le handle du fichier précédemment ouvert avec FileOpen().
offset Le déplacement par rapport à l'origine définie dans le paramètre suivant. Cette valeur peut être positive ou négative. Les valeurs négatives déplacent le pointeur vers l'arrière par rapport à l'origine.
origin Doit être l'une des valeurs suivantes:
    $FILE_BEGIN (0) - Début du fichier.
    $FILE_CURRENT (1) - Position actuelle.
    $FILE_END (2) - Fin de fichier.

Les constantes sont définies dans FileConstants.au3

Valeur de retour

Succès: Retourne True si l'opération a réussi.
Échec: Retourne False.

Remarques

En utilisant FileSetPos() il est possible de lire et écrire sur le même fichier. Lorsque vous tentez de lire et d'écrire sur le même fichier, utiliser toujours FileFlush() entre chaque opération de lecture et d'écriture.

Déplacer le pointeur au milieu des données peut être utilisé pour écraser des données.

En relation

FileFlush, FileGetPos, FileOpen, FileRead, FileReadLine, FileWrite, FileWriteLine

Exemple

#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 en écriture (écrase un fichier existant) et stocke le handle dans une variable.
    Local $hFileOpen = FileOpen($sFilePath, $FO_OVERWRITE)
    If $hFileOpen = -1 Then
        MsgBox($MB_SYSTEMMODAL, "", "Une erreur est survenue en lisant le fichier.")
        Return False
    EndIf

    ; Écrit des données dans le fichier à l'aide du handle retournée par FileOpen.
    FileWriteLine($hFileOpen, "Line 1")
    FileWriteLine($hFileOpen, "Line 2")
    FileWriteLine($hFileOpen, "Line 3")

    ; Vide le buffer du fichier sur le disque.
    FileFlush($hFileOpen)

    ; Vérifie la position de fichier et essaie de lire le contenu à la position actuelle.
    MsgBox($MB_SYSTEMMODAL, "", "Position: " & FileGetPos($hFileOpen) & @CRLF & "Donnée: " & @CRLF & FileRead($hFileOpen))

    ; Maintenant, ajuste la position sur le début.
    FileSetPos($hFileOpen, 0, $FILE_BEGIN)

    ; Vérifie la position dans le fichier et essaie de lire le contenu à partir de la position actuelle.
    MsgBox($MB_SYSTEMMODAL, "", "Position: " & FileGetPos($hFileOpen) & @CRLF & "Donnée: " & @CRLF & FileRead($hFileOpen))

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

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