Koduleht » kuidas » Kuidas saab faili suurus olla null?

    Kuidas saab faili suurus olla null?

    Me kõik liigume aeg-ajalt üle oma arvutite „olukorra”, mis jätab meid täiesti segadusse, näiteks faili, mille suurus on null, kuid kuidas see isegi võimalik on? Tänase SuperUser Q&A postituse vastused on segaduses lugeja küsimusele.

    Tänane küsimuste ja vastuste seanss saabub meiega kohtades, kus on SuperUser-Stack Exchange'i alajaotis, kogukondlikult juhitav Q&A veebisaitide rühmitus.

    Küsimus

    SuperUser lugeja Eugene S tahab teada, kuidas faili suurus võib olla null:

    See on midagi, mida ma sattusin ja ei suutnud mõelda õigele selgitusele. Kui ma saan tühja * .txt fail minu arvutis ja vaatan selle suurust, see näitab nulli suurust. Kuidas on see võimalik? See tähendab, et isegi kui fail ise on tühi, peab sellel olema veel mõni suurus (isegi kui see on lihtsalt oma nime salvestamiseks). Kuidas seda selgitada?

    Kuidas on võimalik, et faili suurus on null?

    Vastus

    SuperUser'i toetajad David Schwartz ja Cort Ammon on meile vastused. Esiteks, David Schwartz:

    See on võimalik, sest seal pole mingit faili. On ainult kataloogi kirje, millel on nimi ja omanik. Kataloogi kirje on failist loogiliselt erinev. Näiteks samas failis võib olla rohkem kui üks nimi rohkem kui ühes kataloogis.

    Kahjuks ei kasutata mõistet "fail" alati täpselt sama asja. Kuid failisuuruse loogika pärineb mudelist, kus kataloogi kirje kinnitab kataloogi, seejärel salvestatakse failinimed ja nendega seotud metaandmed kataloogi.

    Järgneb vastus Cort Ammonilt:

    Faili suuruse semantiline tähendus erineb kasutatavast.

    On palju failisuurusi, mis on sisukad. Kõige tavalisem ja see, mida te siin näete, on faili baitide arv. Kui fail on tühi tekstifail, võib see tõepoolest sisaldada null-baiti. See number on programmeerijate jaoks oluline, sest meil on sageli vaja avada fail, lugeda kõik andmed ja sulgeda see. Me peame teadma, kui palju baidi andmeid on failis, et saaksime ette planeerida.

    Teine tähendus tuleneb sellest, kuidas enamik failisüsteeme andmeid salvestab. Enamik failisüsteeme salvestab andmeid plokkidena. Näiteks võib failisüsteem salvestada andmeid 64 kB plokkides, mis tähendab, et see ei eralda kunagi midagi, mis ei ole isegi 64 kB mitmekordne. See kõlab ebatõhusalt, kuid see võib teha raamatupidamisarvestuse üsna lihtsamaks ja sageli lihtsamaks lihtsamaks.

    Kolmas tähendus, mida te tõmbate, oleks tegelik bittide arv, mida kõvakettal on vaja faili olemasolu kirjeldamiseks. See hõlmab teavet, mida tavaliselt failist eraldi salvestatakse. Näiteks Linuxis salvestatakse faili nime mõiste faili sisaldava kataloogi inode. [Teiste kommentaaride sisendi põhjal salvestatakse see (tehniliselt) kataloogi andmetesse. Kui ma seda kirjutasin, mõtlesin väikese kataloogi puhul. Andmeid, mis on väiksemad kui 156 baiti, saab salvestada otse inode.] See ei ole tavapäraselt kasutatav tähendus, sest failisüsteemi tohutult sügavaid sisemisi toiminguid tundmata on väga raske kindlaks teha (nagu näiteks kõigi failide õiguste salvestamiseks vajalik ruum). Kui teil on aga 1 000 000 baiti kõvaketas ja soovite teada, kui suur on faili kõvadus kõvakettale, on see teile väga oluline tähendus!


    Kas teil on midagi lisada selgitusele? Heli on kommentaarides välja lülitatud. Kas soovite lugeda rohkem vastuseid teistelt tech-savvy Stack Exchange'i kasutajatelt? Vaadake siin täielikku arutelu lõiku.