siDDis Skrevet 21. november 2015 Del Skrevet 21. november 2015 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
Emancipate Skrevet 21. november 2015 Del Skrevet 21. november 2015 så vil du jo bruke mykje tid på å "scanne" heile filaNei. 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
Lycantrophe Skrevet 23. november 2015 Del Skrevet 23. november 2015 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå