Fichiers textes volumineux C/C++
Résolu/Fermé
liloon
Messages postés
18
Date d'inscription
jeudi 17 juillet 2008
Statut
Membre
Dernière intervention
27 novembre 2015
-
17 juil. 2008 à 22:10
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 25 juil. 2008 à 08:50
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 25 juil. 2008 à 08:50
A voir également:
- Fichiers textes volumineux C/C++
- Wetransfer gratuit fichiers lourd - Guide
- Rendre un fichier moins volumineux - Guide
- Renommer plusieurs fichiers - Guide
- Explorateur de fichiers - Guide
- Fichiers bin - Guide
10 réponses
Spylk
Messages postés
1807
Date d'inscription
vendredi 8 février 2008
Statut
Membre
Dernière intervention
23 mars 2011
381
17 juil. 2008 à 22:19
17 juil. 2008 à 22:19
salut !
le must pour traiter des fichiers texte ou des log de serveur etc etc pour moi c'est le langage Perl ....
ça atomise le c/c++ ... ça enterre le php .....le python etc
je pense que ça ne t'aide pas dans l'immédiat, mais c'est toujours bon à savoir ...
le must pour traiter des fichiers texte ou des log de serveur etc etc pour moi c'est le langage Perl ....
ça atomise le c/c++ ... ça enterre le php .....le python etc
je pense que ça ne t'aide pas dans l'immédiat, mais c'est toujours bon à savoir ...
amirah
Messages postés
30
Date d'inscription
mardi 10 juin 2008
Statut
Membre
Dernière intervention
23 février 2011
1
17 juil. 2008 à 22:20
17 juil. 2008 à 22:20
Salut, j'ai eu un problème proche de ça je te propose comment je l'ai résolu peut être t'aideras.
J’ai divisé mon fichier de données à des fichiers que je l'ai mis tous dans un fichier tu le fait manuellement ou tu programme un petit code c'est facile. Puis tu traite dans ton programme tout les fichiers dans ce dossier.
J’ai divisé mon fichier de données à des fichiers que je l'ai mis tous dans un fichier tu le fait manuellement ou tu programme un petit code c'est facile. Puis tu traite dans ton programme tout les fichiers dans ce dossier.
liloon
Messages postés
18
Date d'inscription
jeudi 17 juillet 2008
Statut
Membre
Dernière intervention
27 novembre 2015
1
17 juil. 2008 à 22:50
17 juil. 2008 à 22:50
J'y ai pensé mais je voulais justement éviter de faire des sous fichiers puis faire une concaténation mais si jamais je ne trouve pas de solution par exemple peut etre un format plus rapide à traiter je ferai peut etre ça mais je trouve pas ça pratique :s
Merci kan meme!
Merci kan meme!
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
18 juil. 2008 à 08:28
18 juil. 2008 à 08:28
Salut.
Je n'ai pas ta réponse, mais quelques réflexions.
Si je comprends bien, tu met tout ton fichier en mémoire, si c'est le cas, le problème peu venir de là, essai de charger seulement une partie du fihier, de le raité, de vider la mémoire puis de continuer.
Car en est-ce vraiment la taille de ton fichier qui rend long, ou la quantité de données stocker en mémoire ? Si tu fractionne ton fichier, chaque segment sera traiter plus vite, mais le tout le sera til ?
Sans le code, il est difficile de se faire une idée, il est possible que tu fasse une énormité conduisant à ce ralentissement.
Je n'ai pas ta réponse, mais quelques réflexions.
Si je comprends bien, tu met tout ton fichier en mémoire, si c'est le cas, le problème peu venir de là, essai de charger seulement une partie du fihier, de le raité, de vider la mémoire puis de continuer.
Car en est-ce vraiment la taille de ton fichier qui rend long, ou la quantité de données stocker en mémoire ? Si tu fractionne ton fichier, chaque segment sera traiter plus vite, mais le tout le sera til ?
Sans le code, il est difficile de se faire une idée, il est possible que tu fasse une énormité conduisant à ce ralentissement.
liloon
Messages postés
18
Date d'inscription
jeudi 17 juillet 2008
Statut
Membre
Dernière intervention
27 novembre 2015
1
22 juil. 2008 à 22:17
22 juil. 2008 à 22:17
En effet je passe tt dans le buffer et mon .txt fait 10 Mo. Hmm, je vois ce que tu vx dire mais je ne vois pas encore comment mettre en oeuvre la partie "essai de charger seulement une partie du fichier" à part séparer le fichier comme le suggère amirah. Mais mais je cherche ;) merci. voilà l'extrait du code:
//Effacer toute les lignes contenant - de 13 caractères
//C'est à dire toutes les différentes de la matrice image
std::ifstream ReadMovieFile( inputfile );
if (ReadMovieFile) //Si le fichier est trouvé
{
std::string line;
int Line = 0;
while ( std::getline( ReadMovieFile, line)) //Parcourir le fichier et initialiser line à la ligne actuelle
{
Line++;
if(line.size()>13) // Si la ligne atteinte est différente de la ligne à supprimer...
{
Buffer += line + "\n"; //Rajouter le contenu
}
}
}
ReadMovieFile.close(); //On ferme le fichier en lecture
std::ofstream WriteMovieFile( inputfile ); //Ouvrir en écriture
WriteMovieFile << Buffer;
WriteMovieFile.close(); //Fin
//Effacer toute les lignes contenant - de 13 caractères
//C'est à dire toutes les différentes de la matrice image
std::ifstream ReadMovieFile( inputfile );
if (ReadMovieFile) //Si le fichier est trouvé
{
std::string line;
int Line = 0;
while ( std::getline( ReadMovieFile, line)) //Parcourir le fichier et initialiser line à la ligne actuelle
{
Line++;
if(line.size()>13) // Si la ligne atteinte est différente de la ligne à supprimer...
{
Buffer += line + "\n"; //Rajouter le contenu
}
}
}
ReadMovieFile.close(); //On ferme le fichier en lecture
std::ofstream WriteMovieFile( inputfile ); //Ouvrir en écriture
WriteMovieFile << Buffer;
WriteMovieFile.close(); //Fin
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
23 juil. 2008 à 00:49
23 juil. 2008 à 00:49
Bonsoir,
Je ne comprends pas pourquoi tu charges ton fichier en mémoire ?
Je ne comprends pas pourquoi tu charges ton fichier en mémoire ?
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
23 juil. 2008 à 10:39
23 juil. 2008 à 10:39
essai un truc du genre :
//Effacer toute les lignes contenant - de 13 caractères //C'est à dire toutes les différentes de la matrice image std::ifstream ReadMovieFile( inputfile ); std::ofstream WriteMovieFile( outputfile ); //Ouvrir en écriture if (ReadMovieFile) //Si le fichier est trouvé { std::string line; int Line = 0; while ( std::getline( ReadMovieFile, line)) //Parcourir le fichier et initialiser line à la ligne actuelle { Line++; if(line.size()>13) // Si la ligne atteinte est différente de la ligne à supprimer... { WriteMovieFile << line + "\n"; //Rajouter le contenu } } } ReadMovieFile.close(); //On ferme le fichier en lecture WriteMovieFile.close(); //Fin rename(outputfile,inputfile);//renomme le fichier temporaire en fichier sourcelà tu ne devrai plus avoir de souci de perf
liloon
Messages postés
18
Date d'inscription
jeudi 17 juillet 2008
Statut
Membre
Dernière intervention
27 novembre 2015
1
24 juil. 2008 à 13:04
24 juil. 2008 à 13:04
Merci Char Snipeur ça marche impec!
En effet, je perds inutilement du temps en passant par mon buffer. Je me ss obstiné à utiliser un seul fichier .txt.
Now 200 000 lignes * 44 colonnes en à peine 20-25 s.
Par contre, si quelqu'un à un tuto, un lien ou un post intéressant sur la concaténation de .txt en C/C++, je ss preneur.
J'imagine qu'il doit y avoir une fonction optimisée pr ça mais pr l'instant j'ai trouvé que des infos pr DOS sinon je passerai par ifstream et ofstream pr lire les fichiers et les écrire les uns à la suite des autres ds un meme .txt mais je sens que c'est la meilleure chose à faire...
En effet, je perds inutilement du temps en passant par mon buffer. Je me ss obstiné à utiliser un seul fichier .txt.
Now 200 000 lignes * 44 colonnes en à peine 20-25 s.
Par contre, si quelqu'un à un tuto, un lien ou un post intéressant sur la concaténation de .txt en C/C++, je ss preneur.
J'imagine qu'il doit y avoir une fonction optimisée pr ça mais pr l'instant j'ai trouvé que des infos pr DOS sinon je passerai par ifstream et ofstream pr lire les fichiers et les écrire les uns à la suite des autres ds un meme .txt mais je sens que c'est la meilleure chose à faire...
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
24 juil. 2008 à 15:21
24 juil. 2008 à 15:21
si tu ouvre ton fichier en "append", ton pointeur se met directement à la fin du fichier, et comme ça, tu lit le deuxième et écris directement dans le premier. Je ne suis pas sur qu'il y ai forcément plus rapide, car je pense (à vérifier) qu'une concaténation nécessite le déplacement de données.
liloon
Messages postés
18
Date d'inscription
jeudi 17 juillet 2008
Statut
Membre
Dernière intervention
27 novembre 2015
1
24 juil. 2008 à 20:06
24 juil. 2008 à 20:06
Ok je v essayé ça ce w.e ça devrait etre assez rapide. Par curiosité je v continuer à chercher une autre soluce en C++. Par ailleurs, j'ai lu qu'il y avait des ptits logiciels qui font de la concaténation de fichiers.
Bon ben... pb résolu on va dire!!
Merci bcp Char Snipeur!!
Bon ben... pb résolu on va dire!!
Merci bcp Char Snipeur!!
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
25 juil. 2008 à 08:50
25 juil. 2008 à 08:50
le plus simple pour concaténé fic2 à la suite de fic1, c'est
type fic2>>fic1 sous windows
cat fic2>> fic1 sous linux. Ces petits logiciels sont standard.
type fic2>>fic1 sous windows
cat fic2>> fic1 sous linux. Ces petits logiciels sont standard.