If-Koubou

Как може размерът на файла да бъде нулев?

Как може размерът на файла да бъде нулев? (Как да)

Всички ние понякога се натъкваме на "ситуация" на нашите компютри, която ни оставя напълно объркана, като например файл с размер нула, но как е възможно това? Днешната публикация "SuperUser Q & A" има отговорите на объркания въпрос на читателя.

Днешната сесия за въпроси и отговори ни идва с любезното съдействие на SuperUser - подразделение на Stack Exchange - обединяване на уеб сайтове с въпроси и отговори.

Въпроса

Четецът на SuperUser Юджийн С иска да знае как размерът на файла може да бъде нула:

Това е нещо, в което се натъкнах и не можех да мисля за правилно обяснение. Ако създам празен * .txt файл на компютъра ми и след това погледнете неговия размер, той показва размер нула. Как е възможно това? Искам да кажа, дори ако самият файл е празен, той все пак трябва да има някакъв размер (дори ако е просто да съхранява собственото си име). Как може да се обясни това?

Как е възможно файлът да има размер нула?

Отговорът

Служителите на SuperUser David Schwartz и Cort Ammon имат отговора за нас. Първо, Дейвид Шварц:

Възможно е, защото наистина няма файл. Има само запис в директория с име и собственик. Записите в директорията са логически различни от файла. Например, един и същ файл може да има повече от едно име в повече от една директория.

За съжаление, терминът файл не винаги се използва, за да означава точно същото нещо. Но логиката на размера на файла идва от модела, където записът на директорията придава файл на директория, тогава имената на файловете и свързаните с тях мета данни се съхраняват в директорията.

Последвано от отговора на Корт Амон:

Семантичният смисъл на размера на файла е различен от този, който използвате.

Има много размери на файловете, които имат смисъл. Най-често срещаният и този, който виждате тук, е броят байтове във файла. Ако файлът е празен текстов файл, той може действително да съдържа нулеви байтове. Това число е важно за програмистите, защото често трябва да отваряме файл, да четем всички данни и да го затваряме. Трябва да знаем колко байта от данни ще бъдат във файла, за да можем да планираме напред.

Друго значение възниква от начина, по който повечето файлови системи съхраняват данни. Повечето файлови системи съхраняват данните в блокове. Например, файловата система може да съхранява данни на 64 кБ блокове, което означава, че никога няма да разпределя нищо, което не е равно на 64 кБ. Това звучи неефективно, но може да направи оправдаването на счетоводството доста по-опростено и често по-опростено означава по-бързо.

Трето значение, на което дърпате, би било действителният брой битове, изисквани на твърдия диск, за да се опише наличието на файл. Това включва информация, която обикновено се съхранява отделно от файла. Например, в Linux, концепцията за името на файла се съхранява в инода за директорията, съдържаща файла. [Въз основа на вход от други коментари, това (технически) се съхранява в данните на директорията. Когато написах това, мислех за случая с малката директория. Данни по-малки от 156 байта могат да се съхраняват директно в инода.] Това не е често използвано значение, защото е ужасно трудно да се определи, без да се знае огромно дълбокото вътрешно функциониране на вашата файлова система (като отчитане на пространството, необходимо за съхраняване на всички разрешения във файла). Ако обаче имате твърд диск с 1 000 000 байта и искате да знаете колко голям файл може да се побере на този твърд диск, това ще бъде много важно значение за вас!

Имате ли нещо, което да добавите към обяснението? Звучи в коментарите. Искате ли да прочетете повече отговори от други потребители на Stack Exchange? Вижте цялата тема на дискусията тук.