Kaip failo dydis gali būti nulis?
Mes visi kartais peržengiame „situaciją“ mūsų kompiuteriuose, kurie palieka mus visiškai nesuprantami, pvz., Failas, kurio dydis yra nulis, bet kaip tai įmanoma? Šiandienos „SuperUser“ atsakymų ir atsakymų į atsakymus į painus skaitytojo klausimus.
Šiandienos „Klausimų ir atsakymų“ sesija mums suteikiama pagal „SuperUser“ - „Stack Exchange“ padalinį, bendruomenės sukurtą „Q&A“ svetainių grupavimą.
Klausimas
„SuperUser“ skaitytuvas Eugene S nori sužinoti, kaip failo dydis gali būti nulis:
Tai yra kažkas, ką aš įsibėgėjau ir negalėjau galvoti apie tinkamą paaiškinimą. Jei sukursiu tuščią * .txt failas mano kompiuteryje ir tada žiūrėkite jo dydį, jis rodo nulinį dydį. Kaip tai įmanoma? Aš turiu galvoje, net jei pats failas yra tuščias, jis vis tiek turi turėti tam tikrą dydį (net jei jis yra tik savo vardo saugojimui). Kaip tai galima paaiškinti?
Kaip įmanoma, kad failo dydis būtų nulis?
Atsakymas
„SuperUser“ autoriai David Schwartz ir Cort Ammon atsako už mus. Pirma, David Schwartz:
Tai įmanoma, nes nėra jokio failo. Yra tik katalogo įrašas su pavadinimu ir savininku. Katalogo įrašas logiškai skiriasi nuo failo. Pavyzdžiui, tas pats failas gali turėti daugiau nei vieną pavadinimą daugiau nei viename kataloge.
Deja, terminas „byla“ ne visada reiškia tą patį. Tačiau failo dydžio logika gaunama iš modelio, kuriame katalogo įrašas prideda failą į katalogą, tada failų pavadinimai ir susiję meta duomenys saugomi kataloge.
Po to atsakė Cort Ammon:
Failo dydžio semantinė reikšmė skiriasi nuo naudojamo failo dydžio.
Yra daug failų, kurie yra prasmingi. Dažniausiai pasitaikantis, ir tas, kurį matote čia, yra faile esančių baitų skaičius. Jei failas yra tuščias tekstinis failas, jis gali turėti nulinį baitą. Šis skaičius yra svarbus programuotojams, nes dažnai turime atidaryti failą, skaityti visus duomenis ir uždaryti. Turime žinoti, kiek failų bus faile, kad galėtume planuoti.
Kita reikšmė kyla dėl to, kaip dauguma failų sistemų saugo duomenis. Dauguma failų sistemų saugo duomenis blokais. Pvz., Failų sistema gali saugoti duomenis 64 kB blokais, o tai reiškia, kad ji niekada nedalyvaus nieko, kas nėra net 64 kB. Tai skamba neveiksmingai, tačiau ji gali padaryti buhalterinę apskaitą gana paprastesnę ir dažnai paprastesnę priemonę greičiau.
Trečioji reikšmė, kurią jūs traukiate, būtų tikrasis bitų kiekis, reikalingas kietajame diske, kad būtų aprašytas failo buvimas. Tai apima informaciją, kuri paprastai saugoma atskirai nuo failo. Pavyzdžiui, „Linux“ failo pavadinimo sąvoka yra saugoma kataloge, kuriame yra failas. [Remiantis kitų komentarų duomenimis, tai yra (techniškai) saugoma katalogo duomenyse. Kai parašiau tai, aš galvojau apie mažo katalogo bylą. Duomenys, mažesni nei 156 baitai, gali būti saugomi tiesiogiai inode.] Tai nėra paplitusi reikšmė, nes yra labai sunku nustatyti, nesuprasdami didžiulės gilios vidinės jūsų failų sistemos veikimo (pvz., Vietos, kurioje reikia išsaugoti visas failo teises). Tačiau, jei turite 1 000 000 baitų standųjį diską ir norite sužinoti, kiek failo gali būti tinkama tam kietajam diskui, tai bus labai svarbi reikšmė jums!
Ar ką nors papildyti paaiškinimu? Garsas išjungtas komentaruose. Norite perskaityti daugiau atsakymų iš kitų „tech-savvy Stack Exchange“ vartotojų? Čia rasite visą diskusijų temą.