Salut a tous,
existe t-il une manière simple et rapide de connaître la taille exacte d'un fichier sans avoir à l'ouvrir ?
J'en ai trouver en Delphi, C# mais pas en C++...
Merci,
Salut a tous,
existe t-il une manière simple et rapide de connaître la taille exacte d'un fichier sans avoir à l'ouvrir ?
J'en ai trouver en Delphi, C# mais pas en C++...
Merci,
Salut,
Sans ouvrir le fichier j'en ai aucune idée mais en l'ouvrant:
http://cpp.developpez.com/faq/cpp/?p...HIERS_filesize
Il n'y a rien de standard.
Mais il y a des fonctions dépendant de l'OS, et la fonction file_size de boost.filesystem permet de le faire de manière portable.
Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.
J'ai trouvé cette fonction en Delphi qui fonctione #1 pourtant jai essayé de la traduire mais ca me retourne -1...
C++ :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 // returns file size in bytes or -1 if not found. function FileSize(fileName : wideString) : Int64; var sr : TSearchRec; begin if FindFirst(fileName, faAnyFile, sr ) = 0 then result := Int64(sr.FindData.nFileSizeHigh) shl Int64(32) + Int64(sr.FindData.nFileSizeLow) else result := -1; FindClose(sr) ; end;
Si quelqu'un peut m'aider, merci !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 long __fastcall FileSize(AnsiString filename) { long retour = 0; TSearchRec sr; if ( FindFirst( filename, faAnyFile, sr ) == 0 ) retour += long(sr.FindData.nFileSizeHigh) << long(32) + long(sr.FindData.nFileSizeLow); else retour = -1; FindClose(sr); return retour; }
As-tu regardé le lien que je t'ai donnée ?
Sinon voici un code qui fonctionne en C++
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 long GetFileSize( std::ifstream & Fichier ) { // sauvegarder la position courante long pos = Fichier.tellg(); // se placer en fin de fichier Fichier.seekg( 0 , std::ios_base::end ); // récupérer la nouvelle position = la taille du fichier long size = Fichier.tellg() ; // restaurer la position initiale du fichier Fichier.seekg( pos, std::ios_base::beg ) ; return size ; } //Plus ciblé à ton cas long fileSize(const std::string& fileName) { std::ifstream file(fileName.c_str()); //ouvre un fichier en lecture if(!file) //test d'ouverture return -1; //ou throw quelqueChose file.seekg(0, std::ios::end); return file.tellg(); //retourne la taille //le fichier est fermé automatiquement }
Rien de standard
Sinon, suivant l'OS, tu peux essayer stat(), GetFileSize() ou sa grande soeur GetFileSizeEx()
et aussi boost comme annoncé plus haut
Raymond
Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi
CafuroCafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbeUn logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
Partager