Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Ecrire au millieu d'un fichier [ Archives Visual Basic / Fichier / Disque ] (ark1979)

mardi 14 décembre 2004 à 05:56:15 | Ecrire au millieu d'un fichier

ark1979

Bonjour tout le monde,

Quelqu'un saurait t'il comment écrire au à l'intérieur d'un fichier mais en ajoutant une partie à l'intérieur du fichier existant ?

Exemple :

Fichier original :
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Fichier modifié :
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Mais ceci sans réécrire de fichier (imaginez un fichier
de 600 Mo) la méthode de réécriture ne convient pas.

En fait, il faudrait pouvoir se placer dans le fichier
(à un offset désiré du fichier) et écrire une nouvelle
partie .. ceci aurait pour conséquence de déplacer le reste

Une sorte d'insertion quoi ...

Bon voilà, j'espère que solution il y a .. De toute manière,
je continue de chercher par moi-même, et si je trouve, je posterais la soluce ici ... Mais un pitit coup de main serait
le bienvenue

Merci de votre aide





mardi 14 décembre 2004 à 08:37:28 | Re : Ecrire au millieu d'un fichier

crenaud76

Pas d'autre choix que de lire puis de réécrire le fichier ! Du moins, je n'en connais aucune !!

Christophe R.

mardi 14 décembre 2004 à 10:59:13 | Re : Ecrire au millieu d'un fichier

Gobillot

et pourtant il y a une solution avec:

CreateFile 'ouvrir le fichier
SetFilePointer 'positionner le pointeur de fichier
WriteFile 'écrire à l'endroit du pointeur
SetEndOfFile 'positionner la fin de fichier
CloseHandle 'fermer fichier

Daniel

mardi 14 décembre 2004 à 11:44:12 | Re : Ecrire au millieu d'un fichier

crenaud76

Avec le WriteFile tu fait une insertion ?

Christophe R.

mardi 14 décembre 2004 à 11:50:28 | Re : Ecrire au millieu d'un fichier

Gobillot

non exact ça va effacer ce qui se trouve à la position du pointeur.
ça oblige à lire le reste du fichier pour le récrire après.
mais on gagne quand même toute la lecture et réécriture du début.

Daniel

mardi 14 décembre 2004 à 12:29:18 | Re : Ecrire au millieu d'un fichier

crenaud76

Exact ! Mais il va falloir lire la fin du fichier, sotcker cela dans une variable, puis ecrire l'ajout, puis réécrire la fin. Le stockage risque de couter cher en mémoire, donc en temps de traitement si le fichier fait 600Mo et que l'instertion doit se faire en début de fichier !!! Il est alors peut-être plus efficace de directement faire une réécriture en fichier temporaire !!

Christophe R.

mercredi 15 décembre 2004 à 04:15:25 | Re : Ecrire au millieu d'un fichier

ark1979

Réponse acceptée !
Merci pour vos infos, mais j'avais déjà envisagé toute vos solutions mais loin d'etre satisfaisante sur de gros fichiers.

J'ai par contre trouvé solution rapide avec "CreateFileMapping"
En mappant le fichier j'evite la lourde procédure de lecture réécriture

Je n'ai pas encore mené jusqu'au bout cette méthode mais ca a l'air de bien fonctionner. En effet entre la MSDN et les tuts sur le net sur les API de FileMapping, les exemples donnés m'ont ouvert la voie !

Merci a bientot.

jeudi 6 janvier 2005 à 13:15:48 | Re : Ecrire au millieu d'un fichier

v.massip

Membre Club
Ta solution m'intéresse! Pourrais-tu m'en dire plus STP?!

 


mercredi 23 août 2006 à 22:32:34 | Re : Ecrire au millieu d'un fichier

Oeil_de_taupe


>J'ai par contre trouvé solution rapide avec "CreateFileMapping"
>En mappant le fichier j'evite la lourde procédure de lecture réécriture

Si j'ai bien compris tu utilise ouvre le fichier tu utilises CreateFileMapping puis tu l'utilises comme un fichier tous simple (WriteFile & ReadeFile).
Mais es-ce que cette solution est vraiment plus rapide si tu parcours le fichier de A à Z (tu lis toutes les données)? Parce que ce que tu fais c'est que tu mappes le fichier en mémoire et pour les gros fichiers ça prends aussi beaucoup de temps (question d'accès disque)....

Il y a un bon article accessible ici fait par Microsoft (en anglais). Il parle des avantages de cette technique (la tienne).Parmi les avantages cités il y a:

  1. Rapidité accrue parce que Windows va chercher que les données voulue ( , idem que une simple lecture de fichier)
  2. Le gestionnaire de mémoire virtuelle (qui gère le mappage de fichier) choisi lui-même les données retirées du fichier qu'il faut garder et celle qu'il faut enlever de la mémoire (c'est un avanatage pour les grands fichiers selon eux) mais tu peux aussi le faire toi-même et jeter les données dont tu as pas besoin

Mais bon, je ne vois pas d'avantage par rapport à une simple lecture du fichier.... Si quelqu'un vois...


La taupe voit toujours tout (sauf les bugs)




Cette discussion est classé dans : fichier, écrire, ecrire, millieu, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


Répondre à ce message

Sujets en rapport avec ce message

Ecrire dans une ligne [ par Portos67 ] Bonjour, je souhaite écrire dans un fichier ini, jusqu'ici pas de soucis, mais écrire soit à une certaine ligne soit après que l'application rencontre Ecrire les valeures d'un tableau dans un fichier [ par Hkz ] Bonjour, je voudrai savoir comment faire et s'il était possible d'écrire toute les donner d'un tableau dans un fichier... Voici ma fonction qui pose Fichier .dat [ par jeanjeandada ] Bonjour,Voilà je voudrai écrire un petit morceau de code dans un fichier .bat.J'aimerai lancer un fichier .VBS, tous les jours vers 17h, à partir de m ecrire et compiler un fichier d'aide [ par abonito ] j'aimerais savoir comment écrire et compiler un fichier d'aide d'extension .hlpMerçi d'avancegmya Méthode d'écriture fichier csv [ par Jacky7 ] Bonjour à tous,J'aimerais écrire dans un fichier csv, mon problème est d'écrire plusieurs valeurs de variables dans des colonnes differentes et sur un Question sur ecrire localisée précisement dans un txt, log, ini ? [ par Tyrell2 ] Bonjour,lire un fichier txt, log ou ini c'est plutot facile.. par exemple j'utilise ceci pour l'afficher dans une listbox :Me< écrire dans un fichier word, à une position précise [ par Hermios ] Bonjour à tous,Je souhaiterai savoir s'il est possible (et si oui, comment???) d'utiliser un vbscript pour écrire à un endroit précis dans un document ecrire dans un fichier excel [ par calitoli ] Bonjour,J'aimerais creer un fichier excel puis ecrir dans ce fichier. Apres, de l'ouvrir apres l'ecriture.Comment vous pouvez m'aider?Merci deja-Calit ecrire dans fichier texte [ par Roussetj ] Bonjour,à partir de mon classeur excel initial, j'ouvre un fichier texte. Dans ce fichier texte, je voudrais remplacer certains caractères.je m'expliq lire et ecrire dans un fichier xls depuis vb2008 [ par phil06740 ] bonjourje souhaiterai un code qui fasse ceci:1°)une textbox affiche un chiffre , se chffre est mis a jour au demarrage du programme depuis un fichier


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,437 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.