(Um pouco atrasado para a resposta ...)
Como um arquivo pode ter tamanho zero é um pouco mais complicado do que o fornecido pelas respostas acima. A questão é marcada como Win7, mas olhando para outros sistemas de arquivos "mais simples", como FAT ou NTFS , pode ser útil porque os conceitos são semelhantes.
O disco não "conhece" o que é um arquivo e o que é um diretório; são todos os dados em pequenos blocos. O SO distingue entre o significado dos blocos de dados. Os primeiros são especiais, mas o restante dos blocos contém informações sobre os dados (por exemplo: nome do arquivo, tamanho do arquivo, primeiro bloco de dados contendo os dados) ou os dados em si.
Um diretório é um "arquivo" especial cujos "dados" o SO entende são um bloco de informações contendo informações sobre arquivos, não o conteúdo dos arquivos. Uma boa analogia é uma biblioteca física e o catálogo de cartões. Pense nos blocos de informações como o catálogo de cartões e nas prateleiras como os blocos de dados (o catálogo de cartões também fica em uma estrutura semelhante a uma prateleira).
Quando você "cria" um arquivo (digamos com o comando touch
do UNIX), o SO primeiro cria uma entrada em um bloco de informações (diretório), com o seguinte:
- Nome = Meu_Arquivo.txt
- Comprimento = 0
- Iniciando o bloco de dados = N / A
- Informações adicionais (proprietário, permissões, data de criação / atualização / modificação) etc.
Somente se houver algum dado para "gravar", ele tentará encontrar um bloco de dados vazio para armazenar os dados. Mas os blocos de dados vêm em tamanhos fixos (digamos, 32K) convenientes para o disco chegar e o SO para ler. Se você escreve apenas "Olá", a maior parte do bloco é "vazia" (na verdade pode não ser zeros, mas lixo do que havia antes), então a tabela também atualiza o tamanho para o comprimento (digamos 5 caracteres + Fim do Arquivo) para que você não receba as coisas ruins.
Quando você atualiza o "arquivo" para um tamanho > tamanho do bloco, o SO grava os dados no novo bloco e atualiza um bloco de dados para informar que o arquivo continua no próximo bloco APÓS o primeiro (e assim por diante) e o comprimento é atualizado no novo comprimento (detalhes são diferentes).
O que você tem é uma coleção de blocos de dados de informação (diretórios ou listas) com informações sobre as cadeias de blocos de dados (conteúdo do arquivo).
Logicamente, isso também explica por que uma movimentação de arquivo no mesmo sistema de arquivos está piscando rapidamente, enquanto uma cópia demora muito. O sistema operacional só precisa editar dois blocos de diretório para remover a entrada de um diretório (bloco de dados de informações) e adicioná-los a outro. Excluir um arquivo: basta remover a entrada no bloco de diretório, liberando os blocos de dados do arquivo a serem realocados.
ps: Só porque o catálogo de cartões tem entrada para um livro não significa que ele esteja na prateleira (verificado ou perdido talvez); tamanho do arquivo 0.
pps: Um livro mal colocado dentro da biblioteca implica biblioteca de pesquisa, ou em termos de computador: chkdsk ou disco de reparo!
Uma compreensão maior pode ser obtida lendo-se inodes UNIX ou apreciando como sistemas de controle de versão (ClearCase, TFS, Git, etc.) gerenciam não apenas arquivos e diretórios, mas também versões de arquivos e até mesmo versões de diretórios. Na maioria dos casos, tudo é armazenado em um banco de dados e apresentado ao usuário para aparecer como estrutura e arquivos de diretórios clássicos!