Supprimer un bout de fichier ...

Résolu
cs_Tidam Messages postés 124 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 16 février 2006 - 15 nov. 2005 à 22:19
cs_eRoZion Messages postés 241 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 octobre 2007 - 17 nov. 2005 à 00:39
Voila une question que je me suis pose tout a l'heure ... je sais bien
comment lire un fichier, modifier un fichier ... mais la ou j'ai un
petit probleme, c'est pour supprimer un bout de fichier ... pour moi il
faut reecrire tout ce qu'il y a apres ce bout a retirer au debut de
celui ci, mais quoi que l'on fasse, si on fait cette methode, il
restera la fin de la fin du fichier (je sais pas comment appeler ca :p)
...

Si quelqu'un avait une petite idee ... merci d'avance :p

7 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 nov. 2005 à 22:54
Sous Windows: SetEndOfFile().

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
3
cs_eRoZion Messages postés 241 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 octobre 2007 1
16 nov. 2005 à 19:17
Ce système ne convient pas toujours, par exemple dans le cas d'une
réorganisation de fichier un peu plus complexe. Dans ce cas tu lit dans
le fichier original A, tu ecris de façon organisée dans un fichier
temporaire fraichement créé B, tu efface A et tu renomme B en A.


Ca marche sous windows et unix puisque c'est une methode indépendante des outils employés. ;)




eRoZion
3
cs_eRoZion Messages postés 241 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 octobre 2007 1
16 nov. 2005 à 01:50
Salut,



Tu peux comme l'a dit brunews recopier ce qui t'intéresse au début du fichier et ensuite employer SetEndOfFile().


Ce système ne convient pas toujours, par exemple dans le cas d'une
réorganisation de fichier un peu plus complexe. Dans ce cas tu lit dans
le fichier original A, tu ecris de façon organisée dans un fichier
temporaire fraichement créé B, tu efface A et tu renomme B en A.



Dans le cas d'une réorganisation, tu peux également te servir d'un
buffer mémoire couplé à la première méthode SetEndOfFile(), mais cette
technique est dépendante de la mémoire vive disponible.



:)




eRoZion
0
cs_Tidam Messages postés 124 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 16 février 2006 2
16 nov. 2005 à 17:54
Huhu, oui ca pourrait peut etre marcher sauf que je taff sous unix ...
voir meme je cherche quelque chose de portable sous unix ET windows ...
une fonction comme celles de fcntl.h quoi ...

m'enfin deja merci je sais le faire sous windows au cas ou je ne trouve pas ce que je cherche :p
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Tidam Messages postés 124 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 16 février 2006 2
16 nov. 2005 à 20:05
oué ca marche ca c'est certain mais imagine que tu ais 100 suppressions a faire en 1 seconde ...

je suis pas sure que l'ordinateur va apprecier de devoir creer 100
fichiers en si peu de temps, les recopier tous, supprimer les anciens,
et les renommer ... m'enfin si ya que ca :p
0
cs_eRoZion Messages postés 241 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 octobre 2007 1
17 nov. 2005 à 00:35
Ca fonctionne très bien et très vite si tu utilise une lecture/ecriture par tampon avec fwrite().

Après c'est vrai que si les fichiers sont gros ça prendra du temps mais je ne vois rien d'autre de portable. :/



J'ai cherché deux secondes sur unix, et voilà ce que j'ai trouvé en
réponse à une équivalence à chsize sous unix ; ça doit être ce que tu
cherches mais je n'utilise pas de système unix donc je ne peux pas
tester.

lien1

lien2 (même chose mais perdu dans la faq)





eRoZion
0
cs_eRoZion Messages postés 241 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 octobre 2007 1
17 nov. 2005 à 00:39
Oui j'oubliais, ces liens concernent d'ailleurs comme spécifié une alternative à la fonction ftruncate() spécifique unix.
Regardes aussi de ce côté là.


eRoZion
0
Rejoignez-nous