determiner la taille d'un fichier [résolu]

determiner la taille d'un fichier [résolu] - C++ - Programmation

Marsh Posté le 25-03-2004 à 14:50:56    

hello les people c encore moi!
 
petite question: comment fait on pour obtenir la taille d'un fichier en c++ sans faire de boucle de detection du EOF? y a t-il une fonction du genre getfilesize
 
merci d'avance


Message édité par da_s_monk le 25-03-2004 à 15:31:52
Reply

Marsh Posté le 25-03-2004 à 14:50:56   

Reply

Marsh Posté le 25-03-2004 à 15:31:23    

c bon g trouvé:

Code :
  1. #include <iostream>
  2. #include <windows.h>
  3. using namespace std;
  4. void main(){
  5. HANDLE hFile;
  6.         int fSize;
  7. hFile = CreateFile("test.txt", GENERIC_READ, FILE_SHARE_READ, NULL,OPEN_EXISTING, 0, 0);
  8. if(hFile != INVALID_HANDLE_VALUE)
  9. {
  10.  fSize = GetFileSize(hFile, NULL);
  11. }
  12.         cout << fSize <<endl;
  13. }


 
edit: spas beau faut pas copier :-)


Message édité par da_s_monk le 25-03-2004 à 18:21:31
Reply

Marsh Posté le 25-03-2004 à 17:07:20    

bof ... c'est un peu pas très beau et surtout terriblement pas portable.  
c'est pas compliqué, tu ouvres ton fichier, tu fais un bond jusqu'à la fin (seekg), et tu mesure la différence d'offset avec tellg et bingo

Reply

Marsh Posté le 25-03-2004 à 17:19:16    

Même en Win32, tu peux avoir la taille sans ouvrir le fichier avec GetFileAttributesEx.
Au fait, le CloseHandle il est où ? :-)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 25-03-2004 à 18:07:47    

bonbonbon. le close en effet il a pas voulu venir donc je l'ai pas mis. et le pas portable je m'en doutais bien, mais vu ke j'avais besoin de faire ca vite fais gt content ca marchait!
donc je vais en effet explorer la méthode de Taz
 
merci

Reply

Marsh Posté le 25-03-2004 à 18:20:52    

en effet c plus simple:
#include <iostream>
#include <fstream>
using namespace std;
 
int main ( )  
{
   ifstream file;
 
   file.open( "test.txt" );
   file.seekg( -1, ios_base::end );
   cout << file.tellg();
   file.close();
}

Reply

Marsh Posté le 25-03-2004 à 18:24:31    

pas la peine de fermer le fichier
pas la peine d'appeler open, utilise le constructeur

Reply

Marsh Posté le 25-03-2004 à 18:30:59    

attention aux tailles max, fstat64 expose la taille sur 64bits.

Reply

Marsh Posté le 25-03-2004 à 18:37:28    

bjone a écrit :

attention aux tailles max, fstat64 expose la taille sur 64bits.

on cherche la portabilité ok :o

Reply

Marsh Posté le 26-03-2004 à 00:24:34    

bah les deux existent autant sous windows et sous linux, et sous windows ça passe même sur un cpu 32bits (puisque c'est à la charge du compilo d'émuler l'arithmétique entière en 64bit)


Message édité par bjone le 26-03-2004 à 00:36:10
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed