(Un poco tarde para la respuesta ...)
¿Cómo puede un archivo ser de tamaño cero? Es un poco más complicado que el proporcionado por las respuestas anteriores. La pregunta está etiquetada como Win7, pero mirar otros sistemas de archivos "más simples" como FAT o NTFS puede ser útil ya que los conceptos son similares.
El disco no "sabe" qué es un archivo y qué es un directorio; son todos datos en pequeños bloques. El sistema operativo distingue entre el significado de los bloques de datos. Los primeros son especiales, pero el resto de los bloques contienen información sobre los datos (por ejemplo: nombre del archivo, longitud del archivo, primer bloque de datos que contiene los datos) o los datos en sí.
Un directorio es un "archivo" especial cuyos "datos" entiende el sistema operativo es un bloque de información que contiene información sobre archivos, no el contenido de los archivos. Una buena analogía es una biblioteca física y el catálogo de tarjetas. Piense en los bloques de información como el catálogo de tarjetas y los estantes como los bloques de datos (el catálogo de tarjetas también se encuentra en una estructura similar a un estante).
Cuando "crea" un archivo (digamos con el touch
comando UNIX ), el sistema operativo primero crea una entrada en un bloque de información (directorio), con lo siguiente:
- Nombre = My_File.txt
- Longitud = 0
- Bloque de datos de inicio = N / A
- Información adicional (propietario, permisos, fecha de creación / actualización / modificación), etc.
Solo si hay algunos datos para "escribir", intenta encontrar un bloque de datos vacío para almacenar los datos. Pero los bloques de datos vienen en tamaños fijos (digamos 32K) convenientes para el disco y el sistema operativo para leer. Si solo escribe "Hola", la mayor parte del bloque está "vacío" (en realidad puede no ser ceros, sino basura de lo que estaba allí antes), por lo que la tabla ahora también actualiza el tamaño a la longitud (digamos 5 caracteres + Fin de Archivo) para que no obtenga las cosas malas.
Cuando actualiza el "archivo" a una longitud> tamaño de bloque, el sistema operativo escribe los datos en el nuevo bloque y actualiza un bloque de datos para decir que el archivo continúa en el siguiente bloque DESPUÉS del primero (y así sucesivamente) y la longitud se actualiza. nueva longitud (los detalles difieren).
Lo que termina es una colección de bloques de datos de información (directorios o listas) con información sobre las cadenas de bloques de datos (contenido del archivo).
Lógicamente, esto también explica por qué un movimiento de archivo en el mismo sistema de archivos parpadea rápidamente mientras que una copia lleva mucho tiempo. El sistema operativo solo tiene que editar 2 bloques de directorio para eliminar la entrada de un directorio (bloque de datos de información) y agregar a otro. Eliminar un archivo: simplemente elimine la entrada en el bloque de directorio, liberando los bloques de datos del archivo para ser reasignados.
ps: el hecho de que el catálogo de tarjetas tenga una entrada para un libro no significa que esté en el estante (tal vez extraído o perdido); tamaño de archivo 0.
pps: Un libro fuera de lugar dentro de la biblioteca implica buscar en la biblioteca, o en términos de computadora: ¡chkdsk o reparar el disco!
Se puede obtener una mayor comprensión leyendo acerca de los inodos de UNIX o apreciando cómo los sistemas de control de versiones (ClearCase, TFS, Git, etc.) manejan no solo archivos y directorios, sino también versiones de archivos e incluso versiones de directorios. ¡En la mayoría de los casos, todo se almacena en una base de datos y se presenta al usuario para que aparezca como archivos y estructura de directorios clásicos!