(Трохи пізно до відповіді ...)
Як розмір файлу дорівнює нулю, трохи складніше, ніж передбачено вищезазначеними відповідями. Питання позначене Win7, але перегляд інших "простіших" файлових систем, таких як FAT або NTFS , може бути корисним, оскільки поняття схожі.
Диск не "знає", що таке файл, а що - каталог; це всі дані в маленьких блоках. В ОС розрізняють значення блоків даних. Перші кілька спеціальних, але решта блоків містять або інформацію про дані (наприклад: ім'я файлу, довжину файлу, перший блок даних, що містить дані), або самі дані.
Каталог - це спеціальний "файл", "дані" якого ОС розуміє, це інформаційний блок, що містить інформацію про файли, а не вміст файлів. Доброю аналогією є фізична бібліотека та каталог карт. Розгляньте інформаційні блоки як каталог картки, а полички - як блоки даних (каталог карт також розташований на структурі, подібній до полиць).
Коли ви "створюєте" файл (скажімо, за допомогою touch
команди UNIX ), ОС спочатку створює запис у інформаційному блоці (каталозі) із наступним:
- Ім'я = My_File.txt
- Довжина = 0
- Початок блоку даних = N / A
- Додаткова інформація (власник, дозволи, створена / оновлена / змінена дата) тощо
Тільки за наявності деяких даних для "запису" вона намагається знайти порожній блок даних для зберігання даних. Але блоки даних поставляються у фіксованих розмірах (скажімо, 32 К), зручних для диска, щоб дістатись та ОС читати. Якщо ви пишете лише "Привіт", більша частина блоку "порожня" (насправді це можуть бути не нулі, але сміття з того, що було раніше), тож таблиця також тепер оновлює розмір на довжину (скажімо, 5 символів + Кінець Файл), щоб ви не отримали поганих речей.
Коли ви оновлюєте "файл" на довжину> розмір блоку, ОС записує дані в новий блок і оновлює блок даних, щоб сказати, що файл продовжується на наступний блок ПІСЛЯ першого (і так далі), а довжина оновлюється нова довжина (деталі відрізняються).
У кінцевому підсумку - це набір інформаційних блоків даних (каталогів або списків) з інформацією про ланцюги блоків даних (вміст файлу).
Логічно це також пояснює, чому переміщення файлів у тій же файловій системі блимає швидко, тоді як копія займає тривалий час. ОС має лише редагувати 2 блоки каталогів, щоб видалити запис з одного каталогу (блок інформації) та додати до іншого. Видалити файл: просто видаліть запис у блоці каталогу, звільнивши блоки даних файлів, які потрібно перерозподілити.
ps: Тільки тому, що в каталозі картки є запис для книги, це не означає, що вона знаходиться на полиці (можливо, перевірена чи втрачена); розмір файлу 0.
pps: Неправильно розміщена книга всередині бібліотеки передбачає пошук бібліотеки або в комп'ютерному відношенні: chkdsk або ремонт диска!
Більше розуміння можна зрозуміти, прочитавши про UNIX-індекси або оцінивши, як системи управління версіями (ClearCase, TFS, Git тощо) керують не лише файлами та каталогами, а й версіями файлів і навіть версіями каталогів. У більшості випадків все зберігається в базі даних і подається користувачеві, щоб виглядати як класична структура каталогу та файли!