If-Koubou

Kako veličina datoteke može biti nula?

Kako veličina datoteke može biti nula? (Kako da)

Svi mi ponekad naiđemo na "situaciju" na našim računalima koja nas ostavljaju potpuno zbunjeni, poput datoteke koja ima veličinu nula, ali kako je to čak i moguće? Današnji SuperUser Q & A post ima odgovore na pitanje zbunjenog čitatelja.

Današnja pitanja i odgovori nam se javljaju zahvaljujući SuperUseru - podjele Stack Exchange-a, zajednice-driven grupiranja Q & A web stranica.

Pitanje

Čitač SuperUser Eugene S želi znati kako veličina datoteke može biti nula:

To je nešto što sam se trčala i nisam mogla razmišljati o pravilnom objašnjenju. Ako stvorim prazan * .txt datoteku na mom računalu, a zatim pogledati njegovu veličinu, pokazuje veličinu nula. Kako je to moguće? Mislim, čak i ako je datoteka sama prazna, ona mora i dalje imati neku veličinu (čak i ako je samo spremiti svoje ime). Kako se to može objasniti?

Kako je moguće da datoteka ima veličinu nula?

Odgovor

Davidu Schwartzu i Cort Ammonu su dobili odgovore za nas. Prvo, David Schwartz:

Moguće je jer doista nema datoteke. Postoji samo unos u imeniku s imenom i vlasnikom. Unos u imeniku logički je različit od datoteke. Na primjer, iste datoteke mogu imati više od jednog imena u više od jednog direktorija.

Nažalost, naziv datoteke se ne koristi uvijek znači istu stvar. Ali logika veličine datoteke dolazi od modela gdje unos direktorija pridaje datoteku u direktorij, a zatim se nazivi datoteka i povezani meta podaci pohranjuju u direktorij.

Slijedi odgovor Cort Ammon:

Semantičko značenje veličine datoteke razlikuje se od one koju koristite.

Postoje mnoge veličine datoteka koje su značajne. Najčešći i onaj koji vidite ovdje je broj bajtova u datoteci. Ako je datoteka prazna tekstualna datoteka, može doista sadržavati nulu bajtova. Ovaj broj je važan programerima jer često trebamo otvoriti datoteku, čitati sve podatke i zatvoriti ih. Moramo znati koliko će bajtova podataka biti u datoteci kako bismo mogli planirati unaprijed.

Drugo značenje proizlazi iz načina na koji većina datotečnih sustava pohranjuje podatke. Većina datotečnih sustava pohranjuje podatke u blokove. Na primjer, sustav datoteka može pohraniti podatke u blokovima od 64 kB, što znači da nikada neće dodijeliti ništa što nije čak i više od 64 kB. To zvuči neučinkovito, ali knjigovodstvo može biti vrlo jednostavnije, a često i jednostavnije znači brže.

Treće značenje, koje šepirate, bilo bi stvarni broj potrebnih bitova na tvrdom disku kako bi se opisala prisutnost datoteke. To uključuje informacije koje se obično pohranjuju odvojeno od datoteke. Na primjer, u Linuxu, koncept naziva datoteke pohranjen je u inodi za direktorij koji sadrži datoteku. [Na temelju unosa iz ostalih komentara to je (tehnički) pohranjeno u podacima direktorija. Kad sam ovo napisao, razmišljao sam o slučaju malog imenika. Podaci manje od 156 bajtova mogu se izravno pohraniti u inodu.] Ovo nije uobičajeno značenje jer se to jako teško može utvrditi bez poznavanja iznimno dubokog unutarnjeg djelovanja vašeg datotečnog sustava (kao što je računanje prostora koji je potreban za pohranu svih dozvola na datoteci). Međutim, ako imate tvrdi disk veličine od 1.000.000 bajta i želite znati koliko se velikih datoteka može uklopiti na taj hard disk, to će vam vrlo važno značiti!

Imate li nešto za objašnjenje? Zvuči u komentarima. Želite li pročitati više odgovora od drugih tehnoloških korisnika Stack Exchangea? Pogledajte ovdje cijelu raspravu.