
Streams are used to read or write data in a sequential manner.

BlitzMax supports many kinds of streams, including standard file streams 
(for reading and writing to files), #{bank streams} (for reading and writing to banks) and 
#{endian streams} (for swapping the byte order of stream data).

Streams are usually created using #OpenStream, #ReadStream or #WriteStream. However,
some kinds of streams provide their own methods for creating streams. For example, banks
streams are created with the #CreateBankStream command.

#OpenStream, #ReadStream and #WriteStream all require a %url parameter, which is used to
'locate' the stream. A url is usually a string value.

If the url contains the string "::", then a stream %protocol is being specified. If not,
then the url is assumed to be a simple filename.

External modules can add their own stream protocols to the system, allowing you to use streams
for a wide variety of purposes. For example, the "incbin::" protocol allows you to read data
from a binary file that has been embedded in an application using the #Incbin command.

Other protocols include "http::" for reading and writing data over a network, and 
"littleendian::" and "bigendian::" for swapping the byte order of streams.

To write to a stream, use one of the 'Write' style commands, such as #WriteByte.

To read from a stream, use one of the 'Read' style commands, such as #ReadByte.

Some kinds of streams (for example, file streams and bank streams) support %{random access}.
This means that you can modify where in the stream the next read or write is to occur using
the #SeekStream command. You can also tell where you are in such streams using the 
#StreamPos command.

When you are finished with a stream, you should always close it using #CloseStream.
Failure to do so may result in a resource leak, or prevent the stream from successfully
opening in future.
