Questa documentazione è stata archiviata e non viene gestita.

Classe Stream

Fornisce una visualizzazione generica di una sequenza di byte.

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

[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public abstract class Stream : MarshalByRefObject, IDisposable
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public abstract class Stream extends MarshalByRefObject implements IDisposable
SerializableAttribute 
ComVisibleAttribute(true) 
public abstract class Stream extends MarshalByRefObject implements IDisposable

Per un esempio di creazione di un file e di scrittura di testo in un file, vedere Procedura: scrivere testo su un file. Per un esempio di lettura di testo da un file, vedere Procedura: leggere testo da un file. Per un esempio di lettura e di scrittura in un file binario, vedere Procedura: leggere e scrivere su un file di dati appena creato.

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. La ricerca. La ricerca è la richiesta e la modifica della posizione corrente all'interno di un flusso. 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, una periferica 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 le periferiche sottostanti.

A seconda dell'origine dati o del repository sottostante, i flussi possono supportare solo alcune di queste funzionalità. 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 a Close su uno Stream elimina eventuali dati memorizzati nel buffer con la semplice chiamata automatica a Flush. Close rilascia inoltre le risorse del sistema operativo, come handle di file, connessioni di rete o memoria utilizzata per eventuali buffer interni. 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 pulitura del flusso nel metodo Dispose. Per ulteriori informazioni, vedere Implementazione di un metodo Dispose.

ArgomentoPercorso
Procedura: scrivere testo su un file.NET Framework: Nozioni fondamentali sulla programmazione
Procedura: leggere testo da un file.NET Framework: Nozioni fondamentali sulla programmazione
Procedura: scrivere testo su un file.NET Framework: Nozioni fondamentali sulla programmazione
Procedura: leggere testo da un file.NET Framework: Nozioni fondamentali sulla programmazione

I membri statici pubblici (Shared in Visual Basic) di questo tipo sono validi per le operazioni multithreading. I membri di istanza non sono garantiti come thread safe.

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile per Pocket PC, Windows Mobile per Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema.

.NET Framework

Supportato in: 2.0 1.1 1.0

.NET Compact Framework

Supportato in: 2.0 1.0
Mostra: