Sparse file is a file containing large blocks of zero data. If a file
is marked as sparse, NTFS does not store the blocks marked as zeros,
so sparse files are ideally suited for representing huge files with
relatively small areas of non-zero data. Large zero areas (or just
areas we don't care about) are marked as sparse zeros and don't require
any disk space.
To illustrate the concept let's use FlexHEX to create a large (in fact
the largest possible) file containing only sparse zeros. If we right-click
it in the Explorer window and select Properties, we can see that
the size of the file and the size of the disk space it uses are very different:
Note that no matter how little disk space the file uses,
for any application it is just a regular 16 terabytes long file.
You can convert a stream to sparse or back to non-sparse with the Sparse
command found in the program's Stream menu. To insert block of sparse zeros use
the Insert Zero Block
command in the Edit menu.
Please note that the actual sparse block layout may differ from what you created.
FlexHEX lets you enter zero blocks of any size, but the file system will rearrange
them on the cluster or buffer boundaries. As soon as you save the file, FlexHEX will
read back the actual layout of the sparse blocks and update its edit window accordingly.
A file may contain both sparse and non-sparse streams. The system considers the file
sparse if it contains at least one sparse stream (not necessarily the unnamed one).