Fornisce una visualizzazione generica di una sequenza di byte.
System.MarshalByRefObject
System.IO.Stream
Ulteriori informazioni Spazio dei nomi: System.IO
Assembly: mscorlib (in mscorlib.dll)
<SerializableAttribute> _ <ComVisibleAttribute(True)> _ Public MustInherit Class Stream _ Inherits MarshalByRefObject _ Implements IDisposable
[SerializableAttribute] [ComVisibleAttribute(true)] public abstract class Stream : MarshalByRefObject, IDisposable
[SerializableAttribute] [ComVisibleAttribute(true)] public ref class Stream abstract : public MarshalByRefObject, IDisposable
[<AbstractClass>] [<SerializableAttribute>] [<ComVisibleAttribute(true)>] type Stream = class inherit MarshalByRefObject interface IDisposable end
Il tipo Stream espone i seguenti membri.
| Nome | Descrizione | |
|---|---|---|
|
Stream | Inizializza una nuova istanza della classe Stream. |
| Nome | Descrizione | |
|---|---|---|
|
CanRead | Se sottoposto a override in una classe derivata, recupera un valore che indica se il flusso corrente supporta la lettura. |
|
CanSeek | Se sottoposto a override in una classe derivata, recupera un valore che indica se il flusso corrente supporta la ricerca. |
|
CanTimeout | Ottiene un valore che determina se il flusso corrente prevede il timeout. |
|
CanWrite | Se sottoposto a override in una classe derivata, recupera un valore che indica se il flusso corrente supporta la scrittura. |
|
Length | Se sottoposto a override in una classe derivata, recupera la lunghezza in byte del flusso. |
|
Position | Se sottoposto a override in una classe derivata, recupera o imposta la posizione all'interno del flusso corrente. |
|
ReadTimeout | Ottiene o imposta un valore, in millisecondi, che determina per quanto tempo il flusso tenterà la lettura prima del timeout. |
|
WriteTimeout | Ottiene o imposta un valore, in millisecondi, che determina per quanto tempo il flusso tenterà la scrittura prima del timeout. |
| Nome | Descrizione | |
|---|---|---|
|
BeginRead | Inizia un'operazione di lettura asincrona. |
|
BeginWrite | Inizia un'operazione di scrittura asincrona. |
|
Close | Chiude il flusso corrente e rende disponibili risorse, come socket e handle di file, a esso associate. |
|
CopyTo(Stream) | Legge i byte dal flusso corrente e li scrive nel flusso di destinazione. |
|
CopyTo(Stream, Int32) | Legge tutti i byte dal flusso corrente e li scrive in un flusso di destinazione, utilizzando una dimensione di buffer specificata. |
|
CreateObjRef | Consente di creare un oggetto che contiene tutte le informazioni rilevanti necessarie per la generazione del proxy utilizzato per effettuare la comunicazione con un oggetto remoto. (Ereditato da MarshalByRefObject) |
|
CreateWaitHandle | Obsoleta. Assegna un oggetto WaitHandle. |
|
Dispose() | Rilascia tutte le risorse utilizzate dalla classe Stream. |
|
Dispose(Boolean) | Rilascia le risorse non gestite utilizzate dall'oggetto Stream ed eventualmente rilascia le risorse gestite. |
|
EndRead | Attende il completamento della lettura asincrona in sospeso. |
|
EndWrite | Termina un'operazione di scrittura asincrona. |
|
Equals(Object) | Determina se l'oggetto Object specificato è uguale all'oggetto Object corrente. (Ereditato da Object) |
|
Finalize | Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulitura prima che l'oggetto stesso venga recuperato dalla procedura di Garbage Collection. (Ereditato da Object) |
|
Flush | Se sottoposto a override in una classe derivata, cancella tutti i buffer del flusso e consente la scrittura dei dati memorizzati nel buffer nella periferica sottostante. |
|
GetHashCode | Funge da funzione hash per un determinato tipo. (Ereditato da Object) |
|
GetLifetimeService | Consente di recuperare l'oggetto servizio di durata corrente per controllare i criteri di durata per l'istanza. (Ereditato da MarshalByRefObject) |
|
GetType | Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
|
InitializeLifetimeService | Consente di ottenere un oggetto servizio di durata per il controllo dei criteri di durata per l'istanza. (Ereditato da MarshalByRefObject) |
|
MemberwiseClone() | Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object) |
|
MemberwiseClone(Boolean) | Crea una copia dei riferimenti dell'oggetto MarshalByRefObject corrente. (Ereditato da MarshalByRefObject) |
|
ObjectInvariant | Infrastruttura. Fornisce supporto per un Contract. |
|
Read | Se sottoposto a override in una classe derivata, legge una sequenza di byte dal flusso corrente e passa alla posizione successiva all'interno del flusso corrente in base al numero di byte letti. |
|
ReadByte | Legge un byte dal flusso e sposta in avanti la posizione corrente all'interno del flusso di un byte o restituisce -1 se si trova alla fine del flusso. |
|
Seek | Se sottoposto a override in una classe derivata, imposta la posizione all'interno del flusso corrente. |
|
SetLength | Se sottoposto a override in una classe derivata, imposta la lunghezza del flusso corrente. |
|
Synchronized | Crea un wrapper thread-safe (sincronizzato) per l'oggetto Stream specificato. |
|
ToString | Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
|
Write | Se sottoposto a override in una classe derivata, scrive una sequenza di byte nel flusso corrente e passa alla posizione successiva all'interno del flusso corrente in base al numero di byte scritti. |
|
WriteByte | Scrive un byte nella posizione corrente del flusso e sposta in avanti di un byte la posizione del flusso. |
| Nome | Descrizione | |
|---|---|---|
|
Null | Stream privo di archivio di backup. |
I flussi implicano tre operazioni fondamentali:
-
La lettura dai flussi. La lettura è il trasferimento dei dati da un flusso a una struttura di dati, quale una matrice di byte.
-
La scrittura nei flussi. La scrittura è il trasferimento di dati da una struttura di dati a un flusso.
-
Ricerca. La ricerca è l'operazione che prevede l'interrogazione di un flusso e la modifica della posizione corrente al suo interno. La funzionalità di ricerca dipende dal tipo di archivio di backup di cui un flusso dispone. Nei flussi di rete, ad esempio, non esiste un unico concetto di posizione corrente, di conseguenza questi flussi normalmente non supportano la ricerca.
Stream è la classe base astratta di tutti i flussi. Un flusso è un'astrazione di una sequenza di byte, ad esempio un file, un dispositivo di input/output, un pipe di comunicazione tra processi o un socket TCP/IP. La classe Stream e le relative classi derivate forniscono una visualizzazione generica di questi diversi tipi di input e output, senza che il programmatore venga a contatto con i dettagli specifici del sistema operativo e con i dispositivi sottostanti.
A seconda dell'origine dati o dell'archivio sottostante, è possibile che i flussi supportino queste funzionalità solo in parte. Un'applicazione può richiedere le funzionalità di un flusso utilizzando le proprietà CanRead, CanWrite e CanSeek.
I metodi Read e Write leggono e scrivono i dati in diversi formati. Per i flussi che supportano la ricerca, utilizzare i metodi Seek e SetLength e le proprietà Position e Length per richiedere e modificare la posizione e la lunghezza correnti di un flusso.
Alcune implementazioni di flusso memorizzano nel buffer locale i dati sottostanti per migliorare le prestazioni. Per questi flussi, è possibile utilizzare il metodo Flush per cancellare il contenuto di eventuali buffer interni e assicurare che tutti i dati siano stati scritti nell'origine dati o nel repository sottostante.
La chiamata al metodo Close su Stream scarica i dati memorizzati nel buffer, essenzialmente tramite la chiamata a Flush. Close rilascia anche risorse del sistema operativo quali handle di file, connessioni di rete o memoria utilizzata per il buffering interno. La classe BufferedStream fornisce la funzionalità di esecuzione del wrapping di un flusso memorizzato nel buffer intorno a un altro flusso per migliorare le prestazioni di lettura e scrittura.
Se è necessario un flusso senza archivio di backup, utilizzare Null.
Note per gli implementatori
Quando si implementa una classe derivata di Stream, è necessario fornire le implementazioni per i metodi Read e Write. I metodi asincroni BeginRead, EndRead, BeginWrite e EndWrite vengono implementati tramite i metodi sincroni Read e Write. In modo analogo, le implementazioni di Read e Write funzionano correttamente con i metodi asincroni. Le implementazioni predefinite di ReadByte e WriteByte creano una nuova matrice di byte a elemento singolo, quindi chiamano le implementazioni di Read e Write. Durante la derivazione da Stream, se si dispone di un buffer di byte interno, sottoporre questi metodi a override per accedere al buffer interno, in modo da migliorare sensibilmente le prestazioni. È inoltre necessario fornire le implementazioni di CanRead, CanSeek, CanWrite, Flush, Length, Position, Seek e SetLength.
Non eseguire l'override del metodo Close, inserire invece tutta la logica di pulizia Stream nel metodo Dispose. Per ulteriori informazioni, vedere Implementazione di un metodo Dispose.
.NET Framework
Supportato in: 4, 3.5, 3.0, 2.0, 1.1, 1.0.NET Framework Client Profile
Supportato in: 4, 3.5 SP1Supportato in:
Windows 7, Windows Vista SP1 o versione successiva, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (componenti di base del server non supportati), Windows Server 2008 R2 (componenti di base del server supportati con SP1 o versione successiva), Windows Server 2003 SP2
.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Riferimenti
Altre risorse
System.MarshalByRefObject
System.IO.Stream
Microsoft.JScript.COMCharStream
System.Data.OracleClient.OracleBFile
System.Data.OracleClient.OracleLob
System.Data.SqlTypes.SqlFileStream
System.IO.BufferedStream
System.IO.Compression.DeflateStream
System.IO.Compression.GZipStream
System.IO.FileStream
System.IO.MemoryStream
System.IO.Pipes.PipeStream
System.IO.UnmanagedMemoryStream
System.Net.Security.AuthenticatedStream
System.Net.Sockets.NetworkStream
System.Printing.PrintQueueStream
System.Security.Cryptography.CryptoStream