"A stream can represent many different kinds of sources and destinations, including disk files, devices, other programs, and memory arrays." . . . . .