(Un po 'in ritardo alla risposta ...)
Come può un file avere dimensioni zero è un po 'più complicato di quanto fornito dalle risposte sopra. La domanda è contrassegnata con Win7, ma guardare altri file system "più semplici" come FAT o NTFS , può essere utile in quanto i concetti sono simili.
Il disco non "conosce" cos'è un file e cos'è una directory; sono tutti dati in piccoli blocchi. Il sistema operativo distingue tra significato dei blocchi di dati. I primi sono speciali, ma il resto dei blocchi contiene informazioni sui dati (ad esempio: nome del file, lunghezza del file, primo blocco di dati che contiene i dati) o i dati stessi.
Una directory è un "file" speciale i cui "dati" sono compresi dal sistema operativo è un blocco di informazioni contenente informazioni sui file, non il contenuto dei file. Una buona analogia è una biblioteca fisica e il catalogo delle carte. Pensa ai blocchi di informazioni come al catalogo delle carte e agli scaffali come ai blocchi di dati (il catalogo delle carte si trova anche su una struttura a mensola).
Quando si "crea" un file (ad esempio con il touch
comando UNIX ), il sistema operativo crea innanzitutto una voce in un blocco di informazioni (directory), con il seguente:
- Nome = My_File.txt
- Lunghezza = 0
- Blocco dati di partenza = N / A
- Informazioni aggiuntive (proprietario, autorizzazioni, data di creazione / aggiornamento / modifica), ecc
Solo se ci sono alcuni dati da "scrivere", tenta di trovare un blocco di dati vuoto per memorizzare i dati. Ma i blocchi di dati sono disponibili in dimensioni fisse (diciamo 32K), convenienti per il disco e per il sistema operativo da leggere. Se scrivi solo "Ciao", la maggior parte del blocco è "vuota" (in realtà potrebbe non essere zero, ma immondizia da ciò che c'era prima), quindi la tabella ora aggiorna anche la dimensione alla lunghezza (diciamo 5 caratteri + Fine di File) in modo da non ottenere le cose cattive.
Quando aggiorni il "file" ad una lunghezza> dimensione del blocco, il sistema operativo scrive i dati nel nuovo blocco e aggiorna un blocco di dati per dire che il file continua sul blocco successivo DOPO il primo (e così via) e la lunghezza viene aggiornata nuova lunghezza (i dettagli differiscono).
Ciò che si ottiene è una raccolta di blocchi di dati (directory o elenchi) con informazioni sulle catene di blocchi di dati (contenuto del file).
Logicamente, questo spiega anche perché uno spostamento di file sullo stesso filesystem lampeggia velocemente mentre una copia impiega molto tempo. Il sistema operativo deve solo modificare 2 blocchi di directory per rimuovere la voce da una directory (blocco di informazioni) e aggiungerla a un'altra. Elimina un file: basta rimuovere la voce nel blocco directory, liberando i blocchi di dati del file da riallocare.
ps: Solo perché il catalogo delle carte ha l'iscrizione per un libro non significa che sia sullo scaffale (estratto o forse perso); dimensione del file 0.
pps: un libro fuori posto all'interno della libreria implica una libreria di ricerca, o in termini di computer: chkdsk o ripara disco!
Una maggiore comprensione può essere ottenuta leggendo sugli inode UNIX o apprezzando il modo in cui i sistemi di controllo versione (ClearCase, TFS, Git, ecc.) Gestiscono non solo i file e le directory, ma anche le versioni dei file e persino le versioni delle directory. Nella maggior parte dei casi, tutto viene archiviato in un database e presentato all'utente per apparire come una struttura e file di directory classici!