Hemsida » hur » Hur kan en filens storlek vara noll?

    Hur kan en filens storlek vara noll?

    Vi kör alla tillfällen över en "situation" på våra datorer som lämnar oss helt förvirrade, till exempel en fil som har en nollstorlek, men hur är det än möjligt? Dagens SuperUser Q & A-inlägg har svaren på en förvirrad läsares fråga.

    Dagens Question & Answer-session kommer till oss med tillstånd av SuperUser-en indelning av Stack Exchange, en community-driven gruppering av Q & A-webbplatser.

    Frågan

    SuperUser-läsaren Eugene S vill veta hur en fils storlek kan vara noll:

    Detta är något som jag stötte på och kunde inte tänka på en riktig förklaring. Om jag skapar en tom * .txt-fil på min dator och sedan titta på dess storlek visar den en storlek på noll. Hur är det mojligt? Jag menar även om själva filen är tom, måste den fortfarande ha en viss storlek (även om det bara är att lagra sitt eget namn). Hur kan detta förklaras?

    Hur är det möjligt att en fil har en storlek på noll?

    Svaret

    SuperUser-bidragsgivare David Schwartz och Cort Ammon har svaret för oss. Först upp, David Schwartz:

    Det är möjligt eftersom det verkligen inte finns någon fil. Det finns bara en kataloguppgift med ett namn och en ägare. Kataloginmatningen är logiskt skild från filen. Till exempel kan samma fil ha mer än ett namn i mer än en katalog.

    Tyvärr är termen fil inte alltid menad precis samma sak. Men filstorlekslogiken kommer från den modell där en kataloginmatning fäster en fil i en katalog, så lagras filnamnen och relaterade metadata i katalogen.

    Följd av svaret från Cort Ammon:

    Den semantiska betydelsen av filstorlek skiljer sig från den du använder.

    Det finns många filstorlekar som är meningsfulla. Den vanligaste, och den du ser här, är antalet byte i filen. Om filen är en tom textfil kan den faktiskt innehålla noll byte. Detta nummer är viktigt för programmerare eftersom vi ofta behöver öppna en fil, läsa all data och stänga den. Vi behöver veta hur många byte data kommer att finnas i filen så vi kan planera framåt.

    En annan betydelse härrör från det sätt på vilket de flesta filsystem lagrar data. De flesta filsystem lagrar data i block. Till exempel kan filsystemet lagra data i 64 kB block, vilket innebär att det aldrig kommer att allokera något som inte är en jämn multipel av 64 kB. Det här låter ineffektivt, men det kan göra bokföring ganska enklare och ofta enklare betyder snabbare.

    En tredje mening, som du slår på, skulle vara det faktiska antalet bitar som krävs på hårddisken för att beskriva närvaron av en fil. Detta inkluderar information som vanligtvis lagras separat från filen. Till exempel, i Linux, lagras konceptet för filnamnet i inoden för katalogen som innehåller filen. [Baserat på inmatning från andra kommentarer lagras detta (tekniskt) i katalogens data. När jag skrev detta tänkte jag på småkatalog fallet. Data som är mindre än 156 byte kan lagras direkt i inoden.] Det här är inte en vanlig betydelse eftersom det är fruktansvärt svårt att avgöra utan att känna till de enormt djupa inre funktionerna i ditt filsystem (till exempel redovisning av det utrymme som behövs för att lagra alla behörigheter i filen). Men om du har en 1 000 000 byte hårddisk och vill veta hur stor en fil kan passa på den hårddisken kommer det att bli en mycket viktig betydelse för dig!


    Har du något att lägga till förklaringen? Ljud av i kommentarerna. Vill du läsa mer svar från andra tech-savvy Stack Exchange-användare? Kolla in hela diskussionsgängan här.