Calculer la taille d’un fichier

Problème

Vous avez besoin de connaître la taille d’un fichier.

Solution

Si le fichier n’a pas pour but d’être ouvert, utilisez stat(). Si le fichier est ouvert ou le sera avant d’avoir besoin de sa taille, vous pouvez vous servir de ftell() lorsque le pointeur de fichier est à la fin.

Discussion

Pour obtenir la taille d’un fichier sans l’ouvrir, il suffit d’appeler stat() ainsi :


size_t 
file_len (char *filename) 
{ 
  struct stat buf; 
  if (-1 == stat (filename, &buf)) return (-1); 
  return (buf.st_size); 
}
 

Si le fichier est ouvert, nous pouvons aussi utiliser ftell(). Si vous êtes déjà à la fin du fichier, cette fonction vous renvoie directement la taille du fichier. Sinon, il faut déplacer le pointeur de fichier à la fin avec fseek(). Pour un fichier dont le descripteur est fd, cela donne : fseek(fd,0,SEEK_END); taille = ftell(fd);. Bien sûr, il ne faut pas oublier de replacer le pointeur à l’endroit souhaité si vous ne souhaitez pas lire ou écrire à la fin.

Prototype


#include <sys/types.h> 
#include <sys/stat.h> 
 
int stat (const char *path, struct stat *sb);
 

Voir aussi la page de manuel de la fonction stat().

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Calculer combien de lignes ou de caractères contient un fichier
Suivant
Effectuer une lecture non bloquante d'un fichier