Classe Stream (System.IO)

Cambia visualizzazione:
ScriptFree
Riferimento a .NET Framework
Classe Stream
Il presente articolo è stato tradotto manualmente. Per visualizzare questa pagina e contemporaneamente visualizzarne il contenuto in lingua inglese, passare alla visualizzazione semplificata.

Fornisce una visualizzazione generica di una sequenza di byte.

Gerarchia di ereditarietà

System.Object
  System.MarshalByRefObject
    System.IO.Stream
      Ulteriori informazioni

Spazio dei nomi:  System.IO
Assembly:  mscorlib (in mscorlib.dll)
Sintassi

Visual Basic
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public MustInherit Class Stream _
	Inherits MarshalByRefObject _
	Implements IDisposable
C#
[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class Stream : MarshalByRefObject, 
	IDisposable
Visual C++
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class Stream abstract : public MarshalByRefObject, 
	IDisposable
F#
[<AbstractClass>]
[<SerializableAttribute>]
[<ComVisibleAttribute(true)>]
type Stream =  
    class
        inherit MarshalByRefObject
        interface IDisposable
    end

Il tipo Stream espone i seguenti membri.

Costruttori

  Nome Descrizione
Metodo protetto Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif Stream Inizializza una nuova istanza della classe Stream.
In alto
Proprietà

  Nome Descrizione
Proprietà pubblica Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif CanRead Se sottoposto a override in una classe derivata, recupera un valore che indica se il flusso corrente supporta la lettura.
Proprietà pubblica Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif CanSeek Se sottoposto a override in una classe derivata, recupera un valore che indica se il flusso corrente supporta la ricerca.
Proprietà pubblica Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif CanTimeout Ottiene un valore che determina se il flusso corrente prevede il timeout.
Proprietà pubblica Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif CanWrite Se sottoposto a override in una classe derivata, recupera un valore che indica se il flusso corrente supporta la scrittura.
Proprietà pubblica Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif Length Se sottoposto a override in una classe derivata, recupera la lunghezza in byte del flusso.
Proprietà pubblica Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif Position Se sottoposto a override in una classe derivata, recupera o imposta la posizione all'interno del flusso corrente.
Proprietà pubblica Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif ReadTimeout Ottiene o imposta un valore, in millisecondi, che determina per quanto tempo il flusso tenterà la lettura prima del timeout.
Proprietà pubblica Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif WriteTimeout Ottiene o imposta un valore, in millisecondi, che determina per quanto tempo il flusso tenterà la scrittura prima del timeout.
In alto
Metodi

  Nome Descrizione
Metodo pubblico Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif BeginRead Inizia un'operazione di lettura asincrona.
Metodo pubblico Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif BeginWrite Inizia un'operazione di scrittura asincrona.
Metodo pubblico Supportato da XNA Framework Close Chiude il flusso corrente e rende disponibili risorse, come socket e handle di file, a esso associate.
Metodo pubblico CopyTo(Stream) Legge i byte dal flusso corrente e li scrive nel flusso di destinazione.
Metodo pubblico CopyTo(Stream, Int32) Legge tutti i byte dal flusso corrente e li scrive in un flusso di destinazione, utilizzando una dimensione di buffer specificata.
Metodo pubblico 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)
Metodo protetto Supportato da XNA Framework CreateWaitHandle Obsoleta. Assegna un oggetto WaitHandle.
Metodo pubblico Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif Dispose() Rilascia tutte le risorse utilizzate dalla classe Stream.
Metodo protetto Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif Dispose(Boolean) Rilascia le risorse non gestite utilizzate dall'oggetto Stream ed eventualmente rilascia le risorse gestite.
Metodo pubblico Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif EndRead Attende il completamento della lettura asincrona in sospeso.
Metodo pubblico Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif EndWrite Termina un'operazione di scrittura asincrona.
Metodo pubblico Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif Equals(Object) Determina se l'oggetto Object specificato è uguale all'oggetto Object corrente. (Ereditato da Object)
Metodo protetto Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif 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)
Metodo pubblico Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif 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.
Metodo pubblico Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif GetHashCode Funge da funzione hash per un determinato tipo. (Ereditato da Object)
Metodo pubblico GetLifetimeService Consente di recuperare l'oggetto servizio di durata corrente per controllare i criteri di durata per l'istanza. (Ereditato da MarshalByRefObject)
Metodo pubblico Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif GetType Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object)
Metodo pubblico InitializeLifetimeService Consente di ottenere un oggetto servizio di durata per il controllo dei criteri di durata per l'istanza. (Ereditato da MarshalByRefObject)
Metodo protetto Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif MemberwiseClone() Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo protetto MemberwiseClone(Boolean) Crea una copia dei riferimenti dell'oggetto MarshalByRefObject corrente. (Ereditato da MarshalByRefObject)
Metodo protetto ObjectInvariant Infrastruttura. Fornisce supporto per un Contract.
Metodo pubblico Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif 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.
Metodo pubblico Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif 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.
Metodo pubblico Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif Seek Se sottoposto a override in una classe derivata, imposta la posizione all'interno del flusso corrente.
Metodo pubblico Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif SetLength Se sottoposto a override in una classe derivata, imposta la lunghezza del flusso corrente.
Metodo pubblico Membro statico Synchronized Crea un wrapper thread-safe (sincronizzato) per l'oggetto Stream specificato.
Metodo pubblico Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif ToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)
Metodo pubblico Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif 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.
Metodo pubblico Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif WriteByte Scrive un byte nella posizione corrente del flusso e sposta in avanti di un byte la posizione del flusso.
In alto
Campi

  Nome Descrizione
Campo pubblico Membro statico Supportato da XNA Framework 8f86tw9e.PortableClassLibrary(it-it,VS.100).gif Null Stream privo di archivio di backup.
In alto
Note

I flussi implicano tre operazioni fondamentali:

  1. La lettura dai flussi. La lettura è il trasferimento dei dati da un flusso a una struttura di dati, quale una matrice di byte.

  2. La scrittura nei flussi. La scrittura è il trasferimento di dati da una struttura di dati a un flusso.

  3. 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.

Informazioni sulla versione

.NET Framework

Supportato in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Supportato in:
Piattaforme

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.
Codice thread safe

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.
Vedere anche

Riferimenti

Altre risorse

Gerarchia di ereditarietà

System.Object
  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