Calculer la taille d'un fichier
Bonjour
Je cherche à connaitre la taille de certains fichiers en octets.
Voici les 2 méthodes que j'ai tentée.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
int main(int argc, char *argv[] )
{
struct stat buf;
int result;
long size;
FILE *fd;
result = stat ( argv[1], &buf );
if (result == -1 ) return (-1);
fprintf(stdout, "1)Taille de '%s' : %ld octets\n", argv[1], (long )buf.st_size);
if (( fd = fopen (argv[1], "rb")) == NULL)
{perror("\t fopen() ");return (-1); }
fseek(fd, 0, SEEK_END);
size = ftell(fd);
fclose (fd);
fprintf(stdout, "2)Taille de '%s' : %ld octets\n", argv[1], size);
return 0;
} |
Ces 2 méthodes marche trés bien sur des fichiers de plusieurs Mo mais qand je fait le test sur un fichier de plusieurs Go ca ne marche pas.
Exemple:
Code:
1 2 3 4 5 6 7 8
|
$ ./test /mnt/data/LiveCD.iso // Taille réelle 735715328 octets
1)Taille de '/mnt/data/LiveCD.iso' : 735715328 octets
2)Taille de '/mnt/data/LiveCD.iso' : 735715328 octet
$ ./test /mnt/data/LiveDVD.iso // Taille réelle 4681426944 octets
1)Taille de '/mnt/data/LiveDVD.iso' : 386459648 octets
2)Taille de '/mnt/data/LiveDVD.iso' : 386459648 octets |
J'ai consulté la FAQ qui parle de la secondes méthodes.
Bref je suis coincé.
Si vous avez des idées pour moi, j'en serais ravie ;)