UDF > WinAPIEx > Files & Devices > Files >


_WinAPI_SetEndOfFile

Définit la taille du fichier physique pour le fichier spécifié à la position actuelle du pointeur de fichier

#include <WinAPIFiles.au3>
_WinAPI_SetEndOfFile ( $hFile )

Paramètre

$hFile Handle du fichier qui doit être étendu ou tronqué.
Le handle de fichier doit avoir le droit d'accès $GENERIC_WRITE.

Valeur de retour

Succès: Retourne True
Échec: Retourne False, appelez _WinAPI_GetLastError() pour obtenir des informations sur l'erreur.

Remarque

Cette fonction peut être utilisée pour tronquer ou étendre un fichier.
Si le fichier est étendue, le contenu du fichier entre l'ancienne fin du fichier et la nouvelle fin du fichier n'est pas défini.
Cette fonction définit la taille du fichier.

En relation

_WinAPI_CloseHandle, _WinAPI_CreateFile, _WinAPI_FlushFileBuffers, _WinAPI_GetFileSizeEx, _WinAPI_ReadFile, _WinAPI_SetFilePointer, _WinAPI_WriteFile

Voir aussi

Consultez SetEndOfFile dans la librairie MSDN.

Exemple

#include <WinAPIFiles.au3>
#include <WinAPIHObj.au3>

Local $sFile, $hFile, $sText, $nBytes, $tBuffer

; 1) Crée un fichier et écrit des données
$sFile = @ScriptDir & '\test.txt'
$sText = 'abcdefghijklmnopqrstuvwxyz'
$tBuffer = DllStructCreate("byte[" & StringLen($sText) & "]")
DllStructSetData($tBuffer, 1, $sText)
$hFile = _WinAPI_CreateFile($sFile, 1)
_WinAPI_WriteFile($hFile, DllStructGetPtr($tBuffer), StringLen($sText), $nBytes)
_WinAPI_CloseHandle($hFile)
ConsoleWrite('1) '& FileRead($sFile) & @CRLF)

; 2) Lit 6 octets à partir de la position 3
$tBuffer = DllStructCreate("byte[6]")
$hFile = _WinAPI_CreateFile($sFile, 2, 2)
_WinAPI_SetFilePointer($hFile, 3)
_WinAPI_ReadFile($hFile, DllStructGetPtr($tBuffer), 6, $nBytes)
_WinAPI_CloseHandle($hFile)
$sText = BinaryToString(DllStructGetData($tBuffer, 1))
ConsoleWrite('2) '& $sText & @CRLF)

; 3) Ecrit les 6 octets déjà lus à la position 3 à la même position, mais en majuscules
DllStructSetData($tBuffer, 1, StringUpper($sText))
$hFile = _WinAPI_CreateFile($sFile, 2, 4)
_WinAPI_SetFilePointer($hFile, 3)
_WinAPI_WriteFile($hFile, DllStructGetPtr($tBuffer), 6, $nBytes)
_WinAPI_CloseHandle($hFile)
$tBuffer = 0
ConsoleWrite('3) '& FileRead($sFile) & @CRLF)

; 4) Tronque la taille du fichier à 12 octets
$hFile = _WinAPI_CreateFile($sFile, 2, 4)
_WinAPI_SetFilePointer($hFile, 12)
_WinAPI_SetEndOfFile($hFile)
_WinAPI_CloseHandle($hFile)
ConsoleWrite('4) '& FileRead($sFile) & @CRLF)

FileDelete($sFile)