Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Are 0 bytes files really 0 bytes?

I have a simple question.

When we create a file, let's say "abc.txt" and leave it blank.
The OS will show that the file is 0 bytes size and takes 0 bytes on disk.

If we save 100 of these 0 bytes file into a folder, the OS will also say that the folder's total size is 0 bytes.

This may sound logical because there is nothing in the file. But should not these files take at least a few bytes in the storage device?

After all, we save it somewhere and named it something. Shouldn't the file's name and possibly some other headers at least takes up some space?

like image 843
Karl Avatar asked Feb 10 '11 08:02

Karl


4 Answers

No, they still occupy a few bytes on the file system. Otherwise I would implement a magic filesystem that stored everything encoded in the filenames on empty files.


It actually boils down to a matter of definition. Either the "size of a file" refers to the size of the content of the file, or it refers to the "difference" it makes in terms of free bytes on the underlying file system (that is, size of content (rounded up to the closest block- or cluster-size) + bytes used for it's inode).

like image 72
aioobe Avatar answered Sep 25 '22 13:09

aioobe


These details are stored into what is known as File Allocation Table (talking in Windows FAT context) traditionally. They are created when we format the hard drive. Some predefined space is allocated for it. I don't think the size of it changes.

For example, you format a 100 GB hard drive, only 90+ GB is available for you to use. Other space is used by the file system to manage/remember each file/folder that is saved on the hard drive and where it is saved.

like image 40
decyclone Avatar answered Sep 24 '22 13:09

decyclone


The answer to this question is file-system dependent.

For example, on NTFS an empty file takes up a cluster, and a cluster has a size that depends on your hard disk size.

Here you can read some common cluster size for Windows' file systems.

like image 31
Simone Avatar answered Sep 23 '22 13:09

Simone


The fact that they are present on disk means that a record has been created for them, which of course requires some amount of memory. The 0 bytes simply corresponds to the logical size of the file rounded to the granularity displayed in the UI, but even then it likely contains a file header which will depend on the file format.

like image 29
Ed S. Avatar answered Sep 25 '22 13:09

Ed S.