IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Réécrire un fichier en écrasant son contenu.


Sujet :

C++Builder

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 61
    Points : 48
    Points
    48
    Par défaut Réécrire un fichier en écrasant son contenu.
    Bonjour.
    Je veux ouvrir un fichier en mode exclusif, travailler sur son contenu et le réécrire. Le problème est que s'il y avait plus de caractères initialement, ils restent derrière le nouveau contenu.
    Le fichier doit rester ouvert entre la lecture et l'écriture.
    Voici un bout de code exemple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
       int nb;
       AnsiString as;
     
       handle = FileOpen(FICHIER, fmOpenReadWrite | fmShareExclusive);
       if(handle == -1) { Beep(); return; }
       nb = FileSeek(handle,0,2);
       FileSeek(handle,0,0);
       char *buffer = new char[nb];
       int res = FileRead(handle,buffer, nb);
       as = buffer; // Je lis "11111\n22222"
       FileSeek(handle,0,0);
       as = "33333";
       nb = as.Length();
       FileWrite(handle, as.c_str(), nb); // J'obtiens "33333\n22222"
       FileClose(handle);
    Ca fait un moment que je cherche le moyen de remplacer complétement le contenu de ce fichier, sans succès.
    Merci pour toute suggestion.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 61
    Points : 48
    Points
    48
    Par défaut
    C bon. J'ai fini par trouver, en utilisant l'API Windows...
    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
      HANDLE hdl = CreateFile("d:toto.txt",  GENERIC_READ|GENERIC_WRITE,
      0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
     
      int nb = GetFileSize(hdl, NULL);
      char *buf = new char[nb];
      unsigned long nbRead;
      ReadFile(hdl, buf, nb, &nbRead, NULL);
     
      AnsiString as = "xxxxx";
      nb = as.Length();
      unsigned long nbWritten;
      SetFilePointer(hdl, 0, NULL, FILE_BEGIN);
      WriteFile(hdl, as.c_str(), nb, &nbWritten, NULL);
      SetEndOfFile(hdl);
      delete buf;
      CloseHandle(hdl);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Generer un fichier et lire son contenu sous Zend
    Par cyprien95 dans le forum Zend Framework
    Réponses: 2
    Dernier message: 15/10/2012, 09h11
  2. Generer un fichier et lire son contenu sous Zend
    Par cyprien95 dans le forum Framework .NET
    Réponses: 1
    Dernier message: 07/10/2012, 23h03
  3. fichier vidé de son contenu
    Par philippe6 dans le forum Windows
    Réponses: 7
    Dernier message: 18/03/2011, 12h00
  4. Réponses: 1
    Dernier message: 01/06/2009, 05h12
  5. Réponses: 1
    Dernier message: 16/03/2009, 22h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo