Ako môže byť veľkosť súboru nula?
Všetci príležitostne narazíme na "situáciu" v našich počítačoch, ktorá nás úplne zmiernila, napríklad súbor, ktorý má veľkosť nuly, ale ako je to možné? Dnešný príspevok SuperUser Q & A má odpovede na zmätočnú otázku čitateľa.
Dnešná relácia otázok a odpovedí sa k nám pridelí zdvorilosťou SuperUser - podskupiny Stack Exchange, zoskupenia webových stránok typu Q & A.
Otázka
Čítačka SuperUser Eugene S chce vedieť, ako veľkosť súboru môže byť nula:
To je niečo, čo som narazil do a nemohol myslieť na správne vysvetlenie. Ak vytvorím prázdne * .txt súbor na svojom počítači a potom sa pozrite na jeho veľkosť, ukazuje veľkosť nuly. Ako je to možné? Mám na mysli aj to, že samotný súbor je prázdny, musí mať ešte nejakú veľkosť (dokonca aj vtedy, ak má len uložiť vlastné meno). Ako to možno vysvetliť?
Ako je možné, aby súbor mal veľkosť nuly?
Odpoveď
Sponzori SuperUser David Schwartz a Cort Ammon majú odpoveď pre nás. Prvýkrát, David Schwartz:
Je to možné, pretože naozaj neexistuje žiadny súbor. Existuje len položka adresára s menom a vlastníkom. Položka adresára je logicky odlišná od súboru. Napríklad ten istý súbor môže mať viac ako jeden názov vo viac ako jednom adresári.
Bohužiaľ, termín súbor nie je vždy používaný na to, aby presne znamenal to isté. Ale logika veľkosti súboru pochádza z modelu, kde položka adresára pripojí súbor k adresáru, potom sú názvy súborov a súvisiace meta dáta uložené v adresári.
Nasledovala odpoveď od Cort Ammon:
Sémantický význam veľkosti súboru sa líši od významu, ktorý používate.
Existuje mnoho veľkostí súborov, ktoré sú zmysluplné. Najčastejšou a tu, ktorú tu vidíte, je počet bajtov v súbore. Ak je súbor prázdny textový súbor, môže obsahovať nulové bajty. Toto číslo je dôležité pre programátorov, pretože často potrebujeme otvoriť súbor, prečítať si všetky údaje a zavrieť ho. Musíme vedieť, koľko bajtov údajov bude v súbore, aby sme mohli naplánovať dopredu.
Ďalším významom je spôsob, akým väčšina súborových systémov ukladá dáta. Väčšina súborových systémov ukladá údaje v blokoch. Napríklad súborový systém môže ukladať dáta na blokoch 64 kB, čo znamená, že nikdy nebude prideľovať nič, čo nie je rovnomerným násobkom 64 kB. To znie neefektívne, ale môže urobiť účtovníctvo oveľa jednoduchšie a často jednoduchšie znamená rýchlejšie.
Tretím významom, na ktorom sa naťahujete, by bol skutočný počet bitov potrebných na pevnom disku, ktoré by popisovali prítomnosť súboru. Patria sem informácie, ktoré sa zvyčajne ukladajú oddelene od súboru. Napríklad v systéme Linux je koncept názvu súboru uložený v inode pre adresár obsahujúci súbor. [Na základe údajov z ostatných komentárov je to (technicky) uložené v údajoch adresára. Keď som to napísal, rozmýšľal som o prípade malého adresára. Údaje menšie ako 156 bajtov môžu byť uložené priamo v inode.] Toto nie je bežne používaný význam, pretože je veľmi ťažké ho zistiť bez toho, aby ste vedeli, ako sa váš súborový systém vyznačuje mimoriadne hlbokými vnútornými činnosťami (ako je účtovanie priestoru potrebného na ukladanie všetkých povolení súboru). Ak však máte pevný disk o veľkosti 1 000 000 bajtov a chcete vedieť, do akej veľkosti sa súbor zmestí na tento pevný disk, bude to pre vás veľmi dôležitý význam!
Máte niečo doplniť vysvetlenie? Znie to v komentároch. Chcete sa dozvedieť viac odpovedí od iných používateľov technickej úrovne Stack Exchange? Pozrite sa na celý diskusný príspevok tu.