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 )
$hFile | Handle du fichier qui doit être étendu ou tronqué. Le handle de fichier doit avoir le droit d'accès $GENERIC_WRITE. |
Succès: | Retourne True |
Échec: | Retourne False, appelez _WinAPI_GetLastError() pour obtenir des informations sur l'erreur. |
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.
_WinAPI_CloseHandle, _WinAPI_CreateFile, _WinAPI_FlushFileBuffers, _WinAPI_GetFileSizeEx, _WinAPI_ReadFile, _WinAPI_SetFilePointer, _WinAPI_WriteFile
Consultez SetEndOfFile dans la librairie MSDN.
#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)