View Full Version : [C++] Dimensione di un file
Come faccio a conoscere la dimensione di un qualsiasi file ? Mi serve per fare dei controlli sul file in funzione della sua dimensione in byte ...
Che classe utilizzare ?
stat credo sia portabile, altrimenti se sei su windows GetFileSize (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/getfilesize.asp)
AbuJaffa
10-01-2006, 14:48
Potresti fare cosė: ti posizioni alla fine del file con
fseek( puntatore_file, 0 , SEEK_END)
e leggi il numero di byte con
ftell(puntatore_file)
;)
Fenomeno85
10-01-2006, 17:34
Potresti fare cosė: ti posizioni alla fine del file con
fseek( puntatore_file, 0 , SEEK_END)
e leggi il numero di byte con
ftell(puntatore_file)
;)
questo č il migliore metodo ;)
FILE *fp;
char namefile [] = "file";
fp = fopen (namefile,"r");
if (fp == NULL){
printf ("the file doesn't exist.");
return (-1);
}
fseek (fp,0, SEEK_END);
printf ("File has this size:%d", ftell(fp));
fclose (fp);
ocio che questo va bene solo se il file č binario altrimenti ti restituisce un valore diverso ;)
adesso ti faccio la versione che funziona con tutti ;)
~§~ Sempre E Solo Lei ~§~
Fenomeno85
10-01-2006, 17:54
provato sia file binario che file di testo:
#include <io.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
int _tmain()
{
int fp;
if((fp = _open( "c:\\INSTALL1.LOG", _O_RDWR)) != -1 )
{
float size = _filelength(fp);
printf( "File length before: %6.2f KB\n", (float(_filelength(fp)))/1024);
_close(fp);
}
else printf ("Error to open the file, the file doesn't exist.\n\n");
system ("PAUSE");
return 0;
}
oppure in questo modo superveloce ;)
#include <sys/stat.h>
#include <stdio.h>
int _tmain()
{
struct stat results;
if (stat("c:\\prova", &results) == 0)
printf ("%6.2f KB\n\n", float(results.st_size)/1024);
else
printf ("error.");
system ("PAUSE");
return 0;
}
questo dovrebbe essere anche portabile :D
~§~ Sempre E Solo Lei ~§~
~§~ Sempre E Solo Lei ~§~
AbuJaffa
10-01-2006, 20:44
provato sia file binario che file di testo:
#include <io.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
int _tmain()
{
int fp;
if((fp = _open( "c:\\INSTALL1.LOG", _O_RDWR)) != -1 )
{
float size = _filelength(fp);
printf( "File length before: %6.2f KB\n", (float(_filelength(fp)))/1024);
_close(fp);
}
else printf ("Error to open the file, the file doesn't exist.\n\n");
system ("PAUSE");
return 0;
}
oppure in questo modo superveloce ;)
#include <sys/stat.h>
#include <stdio.h>
int _tmain()
{
struct stat results;
if (stat("c:\\prova", &results) == 0)
printf ("%6.2f KB\n\n", float(results.st_size)/1024);
else
printf ("error.");
system ("PAUSE");
return 0;
}
questo dovrebbe essere anche portabile :D
~§~ Sempre E Solo Lei ~§~
~§~ Sempre E Solo Lei ~§~
;) :D
Fenomeno85
10-01-2006, 23:12
;) :D
:D
~§~ Sempre E Solo Lei ~§~
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.