Stream

Stream CF 1.0, ECMA 1.0, serializable, marshal by reference, disposable

System.IO (mscorlib.dll) abstract class

This class is the basic building block of I/O in the .NET Framework. Many types of application use a Stream in one way or another. When calling System.Console.WriteLine( ) , you use a TextWriter , which contains a StreamWriter . When you design an ASP.NET application, the System.Web.UI.Page uses a System.Net.Sockets.NetworkStream . In fact, whenever you access a remote database server you are using a NetworkStream .

To determine whether a given Stream can read, write, or seek, check CanRead , CanWrite , or CanSeek , respectively. If your stream can seek, you may seek forward or backward using Seek( ) . Length reveals the length of the stream, which can also be set by calling SetLength( ) , and Position allows you to check your current position in the stream.

To perform asynchronous I/O, call BeginRead( ) or BeginWrite( ) . Notification of an asynchronous operation comes in two ways: either via an System.AsyncCallback delegate callback passed in as part of the BeginRead( ) / BeginWrite( ) call, or else by calling the EndRead( ) or EndWrite( ) method explicitly, which blocks the calling thread until the async operation completes.

Streams usually hold on to a precious resource (a network connection or a file handle), which should be freed as soon as it is not needed any more. Because destruction is completely nondeterministic with garbage collection, be sure to call Close( ) at the end of the Stream 's useful lifetime. (Alternatively, wrap the use of the Stream in a using block to have the compiler generate the call to Dispose( ) which in turn calls Close( ) when the block finishes.)

 public abstract class  Stream  : MarshalByRefObject, IDisposable {  // Protected Constructors  protected  Stream  ( );  // Public Static Fields  public static readonly Stream  Null  ;  // =System.IO.Stream+NullStream   // Public Instance Properties  public abstract bool  CanRead  {get; }    public abstract bool  CanSeek  {get; }    public abstract bool  CanWrite  {get; }    public abstract long  Length  {get; }    public abstract long  Position  {set; get; }  // Public Instance Methods  public virtual IAsyncResult  BeginRead  (byte[ ]   buffer   , int   offset   , int   count   ,          AsyncCallback   callback   , object   state   );    public virtual IAsyncResult  BeginWrite  (byte[ ]   buffer   , int   offset   , int   count   ,          AsyncCallback   callback   , object   state   );    public virtual void  Close  ( );    public virtual int  EndRead  (IAsyncResult   asyncResult   );    public virtual void  EndWrite  (IAsyncResult   asyncResult   );    public abstract void  Flush  ( );    public abstract int  Read  (in byte[ ]   buffer   , int   offset   , int   count   );    public virtual int  ReadByte  ( );    public abstract long  Seek  (long   offset   , SeekOrigin   origin   );    public abstract void  SetLength  (long   value   );    public abstract void  Write  (byte[ ]   buffer   , int   offset   , int   count   );    public virtual void  WriteByte  (byte   value   );  // Protected Instance Methods  protected virtual WaitHandle  CreateWaitHandle  ( ); } 

Hierarchy

System.Object System.MarshalByRefObject Stream(System.IDisposable)

Subclasses

BufferedStream , FileStream , MemoryStream , System.Net.Sockets.NetworkStream

Returned By

Multiple types

Passed To

Multiple types



C# in a Nutshell
C # in a Nutshell, Second Edition
ISBN: 0596005261
EAN: 2147483647
Year: 2005
Pages: 963

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net