Kako najti velikost datoteke v programiranju C

Kako Najti Velikost Datoteke V Programiranju C



Ste novi v programiranju C in iščete način, kako ugotoviti velikost datoteke? Pojdi nikamor drugam! V tem priročniku se boste naučili postopka iskanja velikosti datoteke v programiranju C. Število bajtov, uporabljenih za shranjevanje podatkov v datoteki, se imenuje velikost datoteke. Če poznate velikost datoteke, lahko izvajate različne operacije ravnanja z datotekami, vključno s kopiranjem, branjem ali pisanjem.

S pomočjo navodil po korakih, omenjenih v tej vadnici, in preprostih primerov kode lahko hitro ugotovite velikost katere koli datoteke.







Poiščite velikost datoteke v programiranju C

Obstajajo različni načini za iskanje velikosti datoteke v C, omenjeni spodaj.



1: Uporaba funkcije stat().

V C je najbolj preprosta metoda za ugotavljanje velikosti datoteke uporaba stat() funkcijo sistemskega klica. The stat() funkcija pridobi informacije o stanju datoteke in jih shrani v strukturo. Eden od članov te strukture je st_velikost , ki podaja velikost datoteke v bajtih. S to metodo se izognete ročnemu premikanju kazalca datoteke, zaradi česar je lažja za uporabo in manj nagnjena k napakam.



#include
#include

int main ( )
{
struct stat st;
dolga velikost ;
če ( stat ( 'C_File.txt' , & st ) == 0 )
{
velikost = st.st_velikost;
printf ( 'Velikost datoteke je %ld bajtov. \n ' , velikost ) ;
}
vrnitev 0 ;
}


Ta koda pridobi velikost klicane datoteke C_File.txt uporabljati stat() metoda iz knjižnica. The st_velikost element struct stat, v katerem funkcija hrani podatke o datoteki in omogoča iskanje velikosti datoteke. Velikost datoteke se hrani v spremenljivi velikosti in nato printf() se uporablja za tiskanje velikosti na konzolo skupaj s sporočilom. Pred poskusom dostopa do st_velikost lastnost, stavek if preveri, ali je stat() klic funkcije je bil uspešen. Koda nato vrne 0, da pokaže, da se je uspešno izvajala.





Izhod


2: Uporaba funkcije fstat().

Druga funkcija, podobna stat() ali je fstat() funkcijo, ki je enakovredna stat() vendar deluje na odprti datoteki namesto na imenu datoteke. The fstat() funkcija pridobi informacije o odprti datoteki, ki jo opisuje deskriptor datoteke prenesel na to. Sklic na odprto datoteko je predstavljen s celim številom deskriptor datoteke . Podobno kot stat(), fstat() vrne podatke o statusu podane datoteke, vključno z njeno velikostjo v bajtih.



#include
#include
#include

int main ( ) {
int fd;
struct stat st;
fd = odprto ( 'C_File.txt' , SAMO O_RD ) ;
če ( država ( fd, & st ) == - 1 ) {
printf ( »Napaka pri pridobivanju informacij o datoteki. \n ' ) ;
vrnitev 1 ;
}
printf ( 'Velikost datoteke je %ld bajtov. \n ' , st.st_velikost ) ;
blizu ( fd ) ;
vrnitev 0 ;
}


V zgornji kodi se datoteka v tem primeru na začetku odpre s klicem odprto() funkcijo z imenom datoteke in SAMO O_RD možnost, ki odpre datoteko v načinu samo za branje. A deskriptor datoteke (fd) vrne funkcija. Po tem uporabimo fstat() metoda za pridobitev informacij o datoteki, ki jo pošlje kot kazalec na st struktura kot drugi parameter in deskriptor datoteke kot prvi argument. The st struktura je mesto, kjer ta funkcija hrani informacije o datoteki po tem, ko jo pridobi.

Velikost datoteke v bajtih, ki je shranjena v st_velikost član v st strukturo, se nato natisne, če med uporabo ni prišlo do napake fstat() funkcijo. V nasprotnem primeru natisne sporočilo o napaki.

Izhod


3: Uporaba funkcij fseek() in ftell().

Druga metoda za iskanje velikosti datoteke v programiranju C je uporaba fseek() in ftell() funkcije. The ftell() metoda vrne trenutni položaj kazalca datoteke, medtem ko funkcija fseek() premakne kazalec datoteke na dano mesto v datoteki. Velikost datoteke v bajtih lahko najdete z uporabo ftell() funkcijo za pridobitev trenutnega položaja po uporabi fseek() funkcijo za premestitev kazalca datoteke na konec datoteke.

#include
#include

int main ( )
{
MAPA * fp;
dolga velikost ;

fp = fopen ( 'C_File.txt' , 'rb' ) ;
fseek ( fp, 0L, SEEK_END ) ;
velikost = povej ( fp ) ;
fclose ( fp ) ;
printf ( 'Velikost datoteke = %ld bajtov. \n ' , velikost ) ;

vrnitev 0 ;
}


V zgornji kodi z uporabo fopen() način, aplikacija najprej odpre C_File.txt v binarnem načinu. The fseek() funkcija nato uporabi SEEK_END možnost prestavitve kazalca datoteke na konec datoteke. Trenutno lokacijo datoteke, ki ustreza njeni velikosti v bajtih, lahko nato najdete z uporabo ftell() funkcijo. Koda nato uporabi fclose() način za zapiranje datoteke po tiskanju velikosti datoteke na konzolo.

Izhod


4: Uporaba funkcije filelength().

Naslednja metoda je uporaba knjižnice za upravljanje datotek, ki ponuja številne funkcije za upravljanje datotek, vključno s funkcijami za pridobivanje velikost datoteke . Na primer funkcija dolžina datoteke () vrne dolžino datoteke v bajtih glede na njeno ime datoteke. Ta funkcija zahteva datoteko glave .

Obstaja tudi druga funkcija, _filelengthi64(), ki vrne dolžino datoteke v bajtih za datoteke, večje od 4 GB. Razlika med obema funkcijama je vrsta njunih vrnjenih vrednosti, ki prikazuje, koliko bajtov lahko obravnava funkcija.

#include
#include

int main ( )
{
dolga velikost ;
char * fname = 'C_File.txt' ;
velikost = dolžina datoteke ( fileno ( fopen ( fname, 'rb' ) ) ) ;
printf ( 'Velikost datoteke = %ld bajtov. \n ' , velikost ) ;

vrnitev 0 ;
}


Velikost datoteke C_File.txt v bajtih se pridobi s to kodo z uporabo knjižnice za upravljanje datotek Windows. Ko je na voljo deskriptor odprte datoteke, metoda dolžina datoteke () vrne dolžino datoteke v bajtih.

fopen() odpre datoteko v binarnem načinu samo za branje v tej kodi in fileno() vrne datotečni deskriptor odprte datoteke. potem, printf() se uporablja za tiskanje velikosti datoteke. Funkcija nato vrne 0, kar pomeni, da je bila uspešno izvedena.

Izhod


Zaključek

Obstaja več načinov za iskanje velikost datoteke v bajtih v C , vsak s svojimi prednostmi in slabostmi. V zgornji vadnici so obravnavane štiri različne metode; stat() funkcija, fstat() funkcija, fseek() in ftell() funkcije in dolžina datoteke () funkcijo. Razumevanje teh funkcij bo uporabnikom pomagalo najti velikost katere koli datoteke v vašem sistemu.