[C con Clase] Determinar tamaño de un archivo.

Salvador Pozo salvapozo en gmail.com
Mar Abr 7 10:32:44 CEST 2009


Hola:

> Necesitaria saber si existe alguna funcion en alguna libreria de c que
> permita determinar el tamaño de un archivo.

Existen funciones estándar que permiten calcular el tamaño de un
fichero. Concretamente, fseek y ftell en C y los métodos seekg y tellg
con streams.

http://c.conclase.net/ficheros/index.php?cap=004 (Calcular la longitud
de un fichero).

long nBytes;
fseek(fichero, 0, SEEK_END); // Colocar el cursor al final del fichero
nBytes = ftell(fichero); // Tamaño en bytes

En el caso de streams:
long nBytes;
fichero.seekg(0, ios::end); // Colocar el cursor al final del fichero
nBytes = fichero.tellg(); // Tamaño en bytes

Otra cosa es lo que pretendas hacer con esa información. Debes tener
cuidado con que la memoria requerida esté disponible antes de hacer
una lectura, y buscar soluciones alternativas si no hay memoria
suficiente para leer todo el fichero.

En general, como comenta Programante, es mejor usar soluciones
generales que no requieran la carga del fichero completo en memoria.
La intención al usar ficheros es, por lo general doble: preservar
información de forma no volátil o almacenar datos que no caben en
memoria. Si tu caso es el segundo, tendrás problemas...

Hasta pronto.
-- 
Salvador Pozo Coronado
http://www.conclase.net
mailto:salvapozo en gmail.com




Más información sobre la lista de distribución Cconclase