begin process at 2012 02 16 13:52:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

Fichier / Disque

 > 

Ecrire au millieu d'un fichier


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Ecrire au millieu d'un fichier

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ée dans : fichier, écrire, ecrire, millieu, xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


Répondre à ce message

Sujets en rapport avec ce message

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 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 et lire dans un .text a des lignes precis en vb.net [ par toxjamescook ] bonjourj'ai pu voir bcp de source sur ce forum qui permette de lire ou d'ecrire sur un fichier .txt mais il commence tous a la premiere ligne .comment Ecrire dans un fichier excel avec VB6????? [ par faitasse ] Comment faire pour ecrire dans un fichier excel avec VB6?Merci... Ecrire en dessous d'un mot specifique dans un fichier texte [ par dbzonline ] Bonjour a tous , Je vais faire bref.Alors voila , en VB , j'essaye de faire un programme qui permet de enregistrer le contenu d'un textbox dans un fic Lire.Ecrire des fichiers .xml en C++ [ par marsaimo ] Bonjour, J'aimerais savoir s'il y'a un .h dans la librairie C++ qui permet de lire (parser) un fichier XML et surtout de le creer. je voudrais par e Ecrire dans les propriétés d'un fichier Excel [ par cissou06 ] Bonjour!J'aimerais pouvoir écrire dans les propriétés de mon fichier Excel (quand on fait clic droit sur le fichier => Propriétés, on peut rentrer ple Ecrire à la suite dans un fichier txt [ par alexalex55 ] Salut à tous, Voila, je voudrais savoir s'il est possible d'écrire à la suite d'un fichier texte en vbs. Je cherche mias je ne trouve pas !!!Je souhai Ecrire une fonction dans ma feuille Excel à partir de VB [ par Toxik13 ] Bonjour, Je veux écrire dans une cellule Excel à partir de VB6 Je veux en fait écrire une fonction: =ATGetCurrVal(457854; """"; """" Lire et écrire un fichier TAR [ par Robinwood01 ] BonjourJ'ai besoin de faire un programme du même style que cette source (VB6) :http://www.vbfrance.com/codes/LIRE-ECRIRE-FICHIER-TAR-USTAR_34888.aspx<


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales