Taille d’un fichier ?

Signaler
Messages postés
334
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
3 juillet 2010
-
Messages postés
334
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
3 juillet 2010
-
Je cherche une fonction pour connaître la taille d’un fichier et même voir d’un répertoire en Ko.

Merci

14 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
GetFileSize ou FindFirstFile, la seconde pour tout un dossier en le parcourant.
BruNews, ciao...
Messages postés
17
Date d'inscription
samedi 11 octobre 2003
Statut
Membre
Dernière intervention
29 décembre 2003

http://www.cppfrance.com/code.aspx?ID=11283
Cette class contient des fonctions permettant de
récupérer la taille d'un fichier, plusieurs fichiers ainsi
que la taille d'un répetoire, etc ...

*%*%*%*%*%*%*%
%
* vObjects
%
*%*%*%*%*%*%*%
Messages postés
584
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
29 mai 2015

Sinon tu as une autre solution :

FILE* pFile = fopen( "tonfichier.xxx", "rb" );
fseek( pFile, 0, SEEK_END );
long nSize = ftell( pFile );
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
garslouche, NON !
Une taille de fichier doit etre sur 64 bits a notre epoque, donc se servir de GetFileSize ou FindFirstFile.
BruNews, ciao...
Messages postés
584
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
29 mai 2015

Je n'avais jamais fait attention que les tailles étaient différentes...mais bon 4Go c'est qd même une limite difficilement accessible...quoique avec les DVD ça doit commencer à se trouver...

Ceci-dit GetFileSize utilise un DWORD càd 32 bits aussi. Il faut utiliser GetFileSizeEx pour faire du 64 bits. :approve) (ou FindFirstFile)
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
Faut regarder MSDN, GetFileSize comme FindFirstFile rendent les tailles sur 64 bits.
BruNews, ciao...
Messages postés
584
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
29 mai 2015

Ah là pas d'accord...

The GetFileSize function retrieves the size of a specified file. 

This function stores the file size in a DWORD value. To retrieve a file size that is larger than a DWORD value, use the GetFileSizeEx function. 


Et

DWORD : 32-bit unsigned integer. 


Ils n'auraient qd même pas changé??? (ma version : avril 2001)
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
et le 2eme param, il sert a quoi ?
c'est le HIDWORD des 64 bits !!!
BruNews, ciao...
Messages postés
584
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
29 mai 2015

AH ok.....autant pour moi.... ?-)

Ceci-dit c'est qd même mal fichu...une partie est retournée et l'autre est stockée par pointeur...Mais surtout ce que je trouve mal fait c'est MSDN dit que si on veut bosser en 64 bits il faut GetFileSizeEx !
N'empêche que pour faire du 64 bits GetFilSizeEx c'est plus simple! :-p
Messages postés
334
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
3 juillet 2010

Heu.. Désolé..

Pourquoi j’obtiens : (null) ?

HANDLE hFile;
LPSTR str_NomFichier="c:\\Ecran_veille1.exe";
hFile = CreateFile(str_NomFichier,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
DWORD Taille = GetFileSize(hFile,NULL); //mesure la taille du fichier
char buf[100000]; sprintf(buf, "%s",Taille);
SendMessage (GetDlgItem(hdlg,ID_TXT),EM_REPLACESEL, FALSE,(LPARAM) buf) ;

Merci
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
Si tu viens de le creer c'est normal, size = 0;
BruNews, ciao...
Messages postés
334
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
3 juillet 2010

Je n’arrive toujours pas à afficher la taille du fichier.

Dans le code, il n’ y a pas de size = 0;

Apres l’avoir créer, il faut le lire « ReadFile », je ne vois pas la démarche pour aboutir.
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
char buff[20];
HANDLE hFile = CreateFile(....)
DWORD size = GetFileSize(hFile, 0);
CloseHandle(hFile);
ultoa(size, buff, 10);
MessageBox(0, buff, "TAILLE", 0);
BruNews, ciao...
Messages postés
334
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
3 juillet 2010

Ok, en faite, c’étai un problème de conversion.
(« sprintf » au lieux de «ultoa» ça aurai du fonctionné quand même)
Merci, ça fonctionne
ciao... BruNews