The NTFS file system provides applications the ability to create
alternate data streams of information. By default, all data is stored in
a file's main unnamed data stream, but by using the syntax
'file:stream', you are able to read and write to alternates. Not all
applications are written to access alternate streams, but you can
demonstrate streams very simply. First, change to a directory on a NTFS
drive from within a command prompt. Next, type 'echo hello >
test:stream'. You've just created a stream named 'stream' that is
associated with the file 'test'. Note that when you look at the size of
test it is reported as 0, and the file looks empty when opened in any
text editor. To see your stream enter 'more < test:stream' (the type
command doesn't accept stream syntax so you have to use more).
NT does not come with any tools that let you see which NTFS files have
streams associated with them, so I've written one myself. Streams will
examine the files and directories (note that directories can also have
alternate data streams) you specify and inform you of the name and sizes
of any named streams it encounters within those files. Streams makes use
of an undocumented native function for retrieving file stream
information.