Gå til innhold

Kva er den beste måten å finne størrelsen til ein fil?


Anbefalte innlegg

Eg skal ha størrelsen til ein fil.

 

Ser at dei fleste anbefaler disse stegene:

file_pointer = fopen(file_name, "rb");
fseek(file_pointer, 0L, SEEK_END);
file_size = ftell(file_pointer);

Men det som slår meg, er at for store filer så vil du jo bruke mykje tid på å "scanne" heile fila? Tar eg feil?
Er det ikkje betre å bruke stat direkte som går direkte til inoden og lese metadataen/størrelsen til fila der i frå?

Lenke til kommentar
Videoannonse
Annonse

 

 

så vil du jo bruke mykje tid på å "scanne" heile fila
Nei. Den leser ingenting, den bare endrer "read/write pointer" (som er et tall) til slutten av fila. Den bruker sikkert stat eller noe internt.

 

 

 

Er det ikkje betre å bruke stat direkte som går direkte til inoden og lese metadataen/størrelsen til fila der i frå?
Jo, men jeg er ikke sikker på hvor cross-platform det er. Forskjellen vil være ubetydelig.
Lenke til kommentar

Det er forøvrig rimelig lett å teste nettopp hvor tungt det er å bruke fseek - bruk dd og /dev/random og populate en fil på et par MB. Les fra kald disk med fseek og mål hvor lang tid det tar. Så lager du en fil på noen gigabyte og måler.

 

Abstraher fseek+friends til en funksjon og du er good to go.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...