/ / Como o tamanho de um arquivo pode ser zero?

Como o tamanho de um arquivo pode ser zero?

como-um-tamanho-de-arquivo-pode-ser-zero-00

Todos nós ocasionalmente nos deparamos com uma 'situação' emnossos computadores que nos deixam completamente confusos, como um arquivo com tamanho zero, mas como isso é possível? A postagem de perguntas e respostas do superusuário de hoje tem respostas para a pergunta de um leitor confuso.

A sessão de perguntas e respostas de hoje é uma cortesia do SuperUser - uma subdivisão do Stack Exchange, um agrupamento da comunidade de sites de perguntas e respostas.

A questão

O leitor do superusuário Eugene S quer saber como o tamanho de um arquivo pode ser zero:

Isso é algo que eu encontrei e não consegui pensar em uma explicação adequada. Se eu criar um vazio arquivo * .txt no meu computador e depois veja o tamanho,mostra um tamanho de zero. Como isso é possível? Quero dizer, mesmo que o próprio arquivo esteja vazio, ele ainda deve ter algum tamanho (mesmo que seja apenas para armazenar seu próprio nome). Como isso pode ser explicado?

Como é possível que um arquivo tenha tamanho zero?

A resposta

Os colaboradores do superusuário David Schwartz e Cort Ammon têm a resposta para nós. Primeiro, David Schwartz:

É possível porque realmente não há arquivo. Há apenas uma entrada de diretório com um nome e proprietário. A entrada do diretório é logicamente distinta do arquivo. Por exemplo, o mesmo arquivo pode ter mais de um nome em mais de um diretório.

Infelizmente, o termo arquivo nem sempre é usadopara significar exatamente a mesma coisa. Mas a lógica do tamanho do arquivo vem do modelo em que uma entrada de diretório anexa um arquivo a um diretório, então os nomes dos arquivos e os metadados relacionados são armazenados no diretório.

Seguido pela resposta de Cort Ammon:

O significado semântico do tamanho do arquivo é diferente daquele que você está usando.

Existem muitos tamanhos de arquivo significativos. O mais comum, e o que você está vendo aqui, é o número de bytes no arquivo. Se o arquivo é um arquivo de texto vazio, ele pode realmente conter zero bytes. Esse número é importante para os programadores, pois geralmente precisamos abrir um arquivo, ler todos os dados e fechá-lo. Precisamos saber quantos bytes de dados estarão no arquivo para que possamos planejar com antecedência.

Outro significado surge da maneira como a maioria dos arquivossistemas armazenam dados. A maioria dos sistemas de arquivos armazena dados em blocos. Por exemplo, o sistema de arquivos pode armazenar dados em blocos de 64 kB, o que significa que nunca alocará nada que não seja nem múltiplo de 64 kB. Isso parece ineficiente, mas pode tornar a contabilidade um pouco mais simples, e geralmente mais simples significa mais rápido.

Um terceiro significado, no qual você está puxando, seriaseja o número real de bits necessário no disco rígido para descrever a presença de um arquivo. Isso inclui informações que geralmente são armazenadas separadamente do arquivo. Por exemplo, no Linux, o conceito do nome do arquivo é armazenado no inode para o diretório que contém o arquivo. [Com base na entrada de outros comentários, isso é(tecnicamente) armazenados nos dados do diretório. Quando escrevi isso, estava pensando no caso de diretório pequeno. Dados menores que 156 bytes podem ser armazenados diretamente no inode.] Este não é um significado comumente usado porqueé terrivelmente difícil de determinar sem conhecer o funcionamento interno tremendamente profundo do seu sistema de arquivos (como contabilizar o espaço necessário para armazenar todas as permissões no arquivo). No entanto, se você possui um disco rígido de 1.000.000 bytes e deseja saber o tamanho de um arquivo nesse disco rígido, esse será um significado muito importante para você!


Tem algo a acrescentar à explicação? Som desligado nos comentários. Deseja ler mais respostas de outros usuários do Stack Exchange com conhecimento técnico? Confira o tópico de discussão completo aqui.