• Sábado 4 de Mayo de 2024, 22:50

Autor Tema:  Obtener Tamaño De Archivo  (Leído 7343 veces)

maikmr

  • Miembro MUY activo
  • ***
  • Mensajes: 112
    • Ver Perfil
Obtener Tamaño De Archivo
« en: Martes 31 de Mayo de 2005, 20:26 »
0
Hola, ocupo una funcion que capture el tamaño de un archivo, he escuchado que se puede usar el sizeof pero no me funciona supuestamente han que convertir de bytes a entero pero no se como se hace si alguien sabe otra forma de hacerlo se lo agradeceria

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Obtener Tamaño De Archivo
« Respuesta #1 en: Martes 31 de Mayo de 2005, 20:42 »
0
umm no recuerdo pero... asi lo puedes hacer mas o menos


Código: Text
  1.  
  2. long tamano=0;
  3. File f;
  4. ...
  5. ...
  6. fseek(f.0.SEEK_END)
  7. tamano=ftell();
  8. ...
  9. ...
  10.  
  11.  
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

shakka

  • Miembro HIPER activo
  • ****
  • Mensajes: 679
  • Nacionalidad: cr
    • Ver Perfil
    • http://mbrenes.com
Re: Obtener Tamaño De Archivo
« Respuesta #2 en: Martes 31 de Mayo de 2005, 20:52 »
0
/* long int ftell(FILE *fichero); */
por tanto...

long bytes;
long reg;

//FILE *SFile
//esto es para un archivo binario

//posicionarse al final del fichero por si las moscas(no sabemos en donde apunta)
fseek(SFile, 0, SEEK_END);

bytes=ftell(SFile);

pitukilloloco

  • Miembro MUY activo
  • ***
  • Mensajes: 104
    • Ver Perfil
Re: Obtener Tamaño De Archivo
« Respuesta #3 en: Martes 31 de Mayo de 2005, 21:04 »
0
sizeof se aplica a tipos integrales del lenguaje como int o float y a arreglos y estructuras definidas por el usuario pero nunca a archivos ¿será que quieres hacer algo como esto
Código: Text
  1.  
  2. #include <stdio.h>
  3. ...
  4. main ()
  5. {
  6.    ...
  7.    FILE *fp;
  8.    fp = fopen (nomarch,  "r");
  9.    sizeof (fp);
  10.    ...
  11. }
  12.  
  13.  
para encontrar el tamaño de un archivo?
Esto no se puede hacer de esta manera. Si quieres encontrar el tamaño del archivo puedes usar la función ftell para hacerlo. Este es un ejemplo sencillo que te muestra el tamaño de un archivo dando el nombre de este desde la línea de comandos
Código: Text
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. main(int argc, char *argv[])
  6. {
  7.    FILE *fp;
  8.    long int nTamArch;
  9.    if (argc != 2) {
  10.       fprintf (stderr, "Se debe proporcionar el nombre de un archivo.\n");
  11.       exit (EXIT_FAILURE);
  12.    }
  13.    if ((fp = fopen (argv[1], "r")) == NULL) {
  14.       fprintf (stderr, "Error al abrir el archivo %s.\n", argv[1]);
  15.       exit (EXIT_FAILURE);
  16.    }
  17.    fseek (fp, 0L, SEEK_END);
  18.    nTamArch = ftell (fp);
  19.    fclose (fp);
  20.    printf ("El tama\xA4o del archivo %s es de %ld bytes\n", argv[1], nTamArch);
  21.    system ("pause");
  22.    exit (EXIT_SUCCESS);
  23. }
  24.  
  25.  

maikmr

  • Miembro MUY activo
  • ***
  • Mensajes: 112
    • Ver Perfil
Re: Obtener Tamaño De Archivo
« Respuesta #4 en: Miércoles 1 de Junio de 2005, 00:39 »
0
Se los agradesco pero no me funciono muy bien los codigos de los que me uds me hablan estanb en C y yo como detalle que se me escapo, estoy trabajando en C++.

La declaracion y mejor de los archivos es un poco diferente.

Código: Text
  1.  
  2. fstream crear("personas.bat");
  3. long = ..........(crear)? //Como lo hago?
  4. //Capturar el tamaño del archivo u objeto stream?
  5.  
  6.  

pitukilloloco

  • Miembro MUY activo
  • ***
  • Mensajes: 104
    • Ver Perfil
Re: Obtener Tamaño De Archivo
« Respuesta #5 en: Miércoles 1 de Junio de 2005, 02:27 »
0
No sé porque haces una distinción entre C y C++ ¿acaso no sabes que C++ es un superconjunto de C?, esto significa que cualquier programa que realices en C va a funcionar en C++. En particular la librería estándar de entrada y salida de C, la cual tiene como encabezado al archivo <stdio.h> también lo es de C++, y por lo tanto las funciones que te mencionamos anteriormente te van a funcionar en C++. Que tú lo quieras hacer con flujos utilizando la librería de C++ cuyo encabezado es <iostream.h> es otra cosa, pero para esto tendrías que investigar cómo hacer lo mismo que se puede hacer tal como te lo mostramos. Yo siempre he trabajado con las funciones de <stdio.h>, aún programando en C++, y nunca he sentido la necesidad de aprender la de los flujos, pero eso creo que es cuestión de gustos.

shakka

  • Miembro HIPER activo
  • ****
  • Mensajes: 679
  • Nacionalidad: cr
    • Ver Perfil
    • http://mbrenes.com
Re: Obtener Tamaño De Archivo
« Respuesta #6 en: Miércoles 1 de Junio de 2005, 04:53 »
0
Yo no uso estas clases para manejar ficheros(ifstream, ofstream y fstream)
pero leyendo un poco esto seria asi:

long registros;
long bytes;

/* nos situamos al final de archivo */
fichero.seekg(0, ios::end);

bytes = fichero.tellg();