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 : Manipulation de grands fichiers [ Archives / Fichier / Disque ] (jb60)

jeudi 9 septembre 2004 à 23:04:54 | Manipulation de grands fichiers

jb60

Bonjour, c'est encore moi ;-)

Je me demande si lorsque l'on manipule un grand fichier (plusieurs Mo, voir même plusieurs Go) on peut mettre toutes les valeurs dans un buffer, à l'initialisation du programme, par exemple, et les garder en mémoire tout le temps qu'on utilise ce fichier au sein du programme.

Par exemple, avec un logiciel connu tel que Word, lorsque l'on ouvre un fichier énorme (par exemple avecplusieurs centaines de pages + des images, etc), je pense que le fichier est d'abord chargé en mémoire (donc tout le fichier), puis l'utilsateur ne modifie pas constamment ce fichier, mais plutôt un Buffer.
Est ce que c'est comme ça que l'on doit procéder? Ou plutôt faire un grand nombre d'accès au fichier (avec ReadFile et WriteFile) quand l'utilisateur change quelque chose dans la fenêtre d'édition?
Car pour des gros fichiers, la place en mémoire est assez conséquente (peut être même pas suffisante), je me trompe?

Moi je mettrais le tout dans un buffer au début, en lisant le fichier, que je fermerais tout de suite après, puis je rentrerais toutes les modifications nécessaires durant l'execution du programme, et ce n'est que quand l'utilisateur ferme le programme que je recopierai le buffer dans le fichier...

JB

jeudi 9 septembre 2004 à 23:17:39 | Re : Manipulation de grands fichiers

BruNews

Administrateur CodeS-SourceS
2 Go de memoire maxi adressable par processus.
Il est donc hors de question de charger des fichiers enormes en 1 passe.

ciao...
BruNews, Admin CS, MVP VC++

jeudi 9 septembre 2004 à 23:46:22 | Re : Manipulation de grands fichiers

jb60

OK, merci, je ne savais pas.
(je ne sais pas grand chose, mais j'apprends, lol)

JB

vendredi 10 septembre 2004 à 01:25:09 | Re : Manipulation de grands fichiers

NitRic


FileMapping, très utile pour manipuler de gros fichier ...

char tmp[] = "Bonjour, c'est moi NitRic!";
void * file = CreateFile(...);
void * map = CreateFileMapping(...);
char * ptr = MapViewOfFile(...);

/* dison que le fichier est plutot gros */
memcpy( ptr+564123, tmp, sizeof(tmp));

/* etc ... */
/* etc ... */
/* etc ... */
/* attention, pas de ++ptr ou ptr+=num; etc ...
utiliser un autre pointeur pour faire ca;
char * ptr2 = ptr;
while ( *ptr2++ ) { ... } par exemple
*/

UnmapViewOfFile(ptr);
CloseHandle(map);
CloseHandle(file);

il y à aussi FlushMapViewOfFile() pour faire un flush ou deux si besoin sur le disque, etc ... faut juste faire attention de pas dépasser la taille du fichier sinon une exception est générée ...


~(.:: NitRic ::.)~



Cette discussion est classé dans : fichier, buffer, programme, fichiers, exemple


Répondre à ce message

Sujets en rapport avec ce message

HANDLE de fichiers [ par vecchio56 ] Salut J'ai un programme qui travaille sur des fichiers, et l'utilisateur peut enregistrer le fichier quand il le veut. La question que je me pose est Lecture d'un fichier [ par Ombitious_Developper ] salut:J'ai écrit un programme C qui lit le contenu d'un fichier donné.Le programme tourne bien avec les fichiers (*.txt) mais c'est ne pas le cas a lecture fichiers [ par toff86 ] Bonjour,J'ai fait un programme qui genere un fichier texte, dans le quel se trouve la date et la temperature: exemple: 20/12/2004 -- 15:44:12 18.60 Lister des fichiers [ par deck_bsd ] Bonsoir à tous, Voila j'ai un problème. A un moment dans mon programme je doit lister les fichier contenut dans un dossier, jusque là aucun problème. Comment copier un fichier .H et un fichier.CPP d'un programme à un autre [ par soamie2001 ] Salut à vous,J'ai ecris un programme x en C++ sous visual studio.net qui comprend des fichiers H et des fichiers CPP.Manitenant j'ecris un programme y détection d'un mot dans un fichier [ par stan000 ] Bonjour,J'aurais besoin d'aide pour réaliser un programme ou pour connaitre la démarche à suivre.J'ai un fichier texte contenant plusieurs lignes dont programme d'ecriture dans un fichier [ par skim13 ] Bonjour,j'ai ecris un programme qui recupere des.C et qui ecrit des lignes que jai mis dans un .txt.Ainsi je fais une liste chainé de mes differents f Problème avec l'ouverture totale de certains fichiers! [ par ndubien ] Bonjour, J'ai un problème avec l'une de mes fonctions, cette derniere est censée ouvrir tous les fichiers du début à la fin mais lorsqu'elle renc Variables globales [ par repial ] Bonjour à tous,dans un projet à plusieur fichiers (sous dev cpp), je cherche à déclarer mes variables dans un de ces fichiers, et qu'elles soient acce Ouvrir un fichier dans son intégralité en C++ [ par ndubien ] Bonjour,J'ai déjà posé cette question, mais elle n'a été qu'à moitié satisfaite.Je m'explique je suis en train de créer un programme qui necessite d'o


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

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



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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é.