(Trochę za późno na odpowiedź ...)
W jaki sposób plik może mieć rozmiar zero jest nieco bardziej skomplikowany niż w przypadku powyższych odpowiedzi. Pytanie jest oznaczone jako Win7, ale patrząc na inne „prostsze” systemy plików, takie jak FAT lub NTFS , może być przydatne, ponieważ koncepcje są podobne.
Dysk nie „wie”, co to jest plik i jaki jest katalog; to wszystkie dane w małych blokach. System operacyjny rozróżnia znaczenie bloków danych. Pierwsze kilka specjalnych, ale pozostałe bloki zawierają informacje o danych (np. Nazwa pliku, długość pliku, pierwszy blok danych zawierający dane) lub same dane.
Katalog jest specjalnym „plikiem”, którego „dane” rozumiane przez system operacyjny to blok informacyjny zawierający informacje o plikach, a nie o zawartości plików. Dobrą analogią jest fizyczna biblioteka i katalog kart. Pomyśl o blokach informacyjnych jako katalogu kart i półkach jako blokach danych (katalog kart również ma strukturę półkową).
Kiedy „tworzysz” plik (powiedzmy z touch
poleceniem UNIX ), system operacyjny najpierw tworzy wpis w bloku informacyjnym (katalogu), z następującym:
- Name = My_File.txt
- Długość = 0
- Początkowy blok danych = N / A
- Dodatkowe informacje (właściciel, uprawnienia, data utworzenia / aktualizacji / modyfikacji) itp
Tylko wtedy, gdy istnieją jakieś dane do „zapisu”, próbuje on znaleźć pusty blok danych do przechowywania danych. Ale bloki danych są w stałych rozmiarach (powiedzmy 32K), które są wygodne dla dysku i systemu operacyjnego do odczytu. Jeśli piszesz tylko „Hello”, większość bloku jest „pusta” (właściwie nie może być zerami, ale śmieciami z tego, co było wcześniej), więc tabela również aktualizuje rozmiar do długości (powiedzmy 5 znaków + Koniec Plik), więc nie dostaniesz złych rzeczy.
Po zaktualizowaniu rozmiaru pliku do rozmiaru bloku system operacyjny zapisuje dane w nowym bloku i aktualizuje blok danych, aby powiedzieć, że plik jest kontynuowany w następnym bloku PO pierwszej (i tak dalej), a długość jest aktualizowana. nowa długość (szczegóły różnią się).
W rezultacie otrzymujesz zbiór bloków danych informacyjnych (katalogów lub list) z informacjami o łańcuchach bloków danych (zawartość pliku).
Logicznie wyjaśnia to również, dlaczego plik przesuwa się na tym samym systemie plików szybko miga, podczas gdy kopia zajmuje dużo czasu. System operacyjny musi jedynie edytować 2 bloki katalogów, aby usunąć wpis z jednego katalogu (bloku danych informacji) i dodać go do innego. Usuń plik: po prostu usuń wpis w bloku katalogu, uwalniając bloki danych pliku do ponownego przydzielenia.
ps: Tylko dlatego, że katalog kart ma wpis do książki, nie oznacza, że jest na półce (być może sprawdzony lub zagubiony); rozmiar pliku 0.
pps: źle umieszczona książka w bibliotece oznacza bibliotekę wyszukiwania lub w kategoriach komputerowych: chkdsk lub dysk naprawczy!
Lepsze zrozumienie można uzyskać, czytając o i-węzłach systemu UNIX lub doceniając, w jaki sposób systemy kontroli wersji (ClearCase, TFS, Git itp.) Zarządzają nie tylko plikami i katalogami, ale także wersjami plików, a nawet wersjami katalogów. W większości przypadków wszystko jest przechowywane w bazie danych i prezentowane użytkownikowi jako klasyczna struktura katalogów i plików!