man
pages.
A stream is an abstraction on top of the FD interface. A stream
provides many character-based processing functions. This includes the
interpretation of ASCII code sequence of integers (base 8, 10 and 16)
and many other processing/translation operations.
Streams also provide an interface to interpret an ASCII sequence as lines (using the linefeed character to mark the end of each line). Likewise, there is another interface to return a character read from a stream.
There are several ways to create a stream. A stream can be created directly from the path of a file. Or, a stream can be created from an existing FD. This means a stream can be just as flexible as a FD as far as what kind of files it can represent.
Streams are useful for character-based operation, as well as operations that require the interpretation of characters in a stream.