EOF à une position donnée

layoutl Messages postés 2 Date d'inscription samedi 26 avril 2008 Statut Membre Dernière intervention 1 mai 2008 - 26 avril 2008 à 09:56
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 - 26 avril 2008 à 10:32
Bonjour,


Je cherches a savoir si il est possible par le C et les API win 32, de dire :
A partir de cette offset du fichier, celui-ci est terminé.

En gros, je souhaite (decoupé) mettre fin à un fichier à partir de l'offset X, sans pour autemps faire une copie temporaire du fichier.


Merci par avance.

2 réponses

BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
26 avril 2008 à 10:24
SetEndOfFile(hfl);

ciao...
BruNews, MVP VC++
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
26 avril 2008 à 10:32
Bonjour,

C'est possible avec les fonctions SetFilePointer() et SetEndOfFile() :

bool SetFileSize
(
    const char* pszFileName // I:nom du fichier
   ,long        lNewSize    // I:nouvelle longueur
)                           // O:true=ok false=erreur
{
   // --- Ouvrir le fichier
   HANDLE hFile = CreateFile(pszFileName,GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
   if (hFile == INVALID_HANDLE_VALUE) return false;
   
   // --- Déplacer le pointeur à la nouvelle position
   SetFilePointer(hFile,lNewSize,NULL,FILE_BEGIN);
   if (GetLastError() != NO_ERROR)
   {
      CloseHandle(hFile);
      return false;
   }
   
   // --- Forcer la fin de fichier
   if (SetEndOfFile(hFile) == 0)
   {
      CloseHandle(hFile);
      return false;
   }
   
   // --- Fermer le fichier
   CloseHandle(hFile);
   return true;
}

Jean-François
0