Chapter 31. System.IO
The System.IO types serve as the primary means for
stream-oriented I/O—files, principally, although the abstract
types defined here serve as base classes for other forms of I/O, such
as the XML stack in System.Xml. The
System.IO namespace is shown in Figure 31-1 and Figure 31-2.
The System.IO namespace can be
seen as two distinct partitions: a set of utility types for using and
working with the local machine’s filesystem, and a
protocol stack for working with bytestream-oriented input and output.
The former partition is the collection of classes such as
Directory and
FileSystemWatcher, whereas the latter partition is
the set of Stream and
Reader/Writer types.
The Stream types in System.IO
follow a basic object model, similar to the I/O model used by the
C/C++ runtime library: all serial byte access is a stream, and there
are different sources and sinks for this serialized byte data. In the
System.IO package, this is represented directly by
the abstract base type Stream; its concrete
subtypes represent the actual I/O access:
FileStream represents I/O to a file, and
MemoryStream represents I/O to a literal array of
bytes (whose size is dynamically managed) in memory. Other packages
within the .NET Framework Class Library offer up their own
Stream-derived types. For example, in the
System.Net namespace, socket connections and HTTP
responses are offered up as Stream-derived types, giving .NET programmers the ability to treat any sort of input or output data as “just ...