Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Classe Stream

Fornisce una visualizzazione generica di una sequenza di byte. Questa è una classe abstract.

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

[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class Stream : MarshalByRefObject, 
	IDisposable

Il tipo Stream espone i seguenti membri.

  NomeDescrizione
Metodo protettoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreStreamInizializza una nuova istanza della classe Stream.
In alto

  NomeDescrizione
Proprietà pubblicaSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreCanReadSe sottoposto a override in una classe derivata, recupera un valore che indica se il flusso corrente supporta la lettura.
Proprietà pubblicaSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreCanSeekSe sottoposto a override in una classe derivata, recupera un valore che indica se il flusso corrente supporta la ricerca.
Proprietà pubblicaSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreCanTimeoutOttiene un valore che determina se il flusso corrente prevede il timeout.
Proprietà pubblicaSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreCanWriteSe sottoposto a override in una classe derivata, recupera un valore che indica se il flusso corrente supporta la scrittura.
Proprietà pubblicaSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreLengthSe sottoposto a override in una classe derivata, recupera la lunghezza in byte del flusso.
Proprietà pubblicaSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StorePositionSe sottoposto a override in una classe derivata, recupera o imposta la posizione all'interno del flusso corrente.
Proprietà pubblicaSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreReadTimeoutOttiene o imposta un valore, in millisecondi, che determina per quanto tempo il flusso tenterà la lettura prima del timeout.
Proprietà pubblicaSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreWriteTimeoutOttiene o imposta un valore, in millisecondi, che determina per quanto tempo il flusso tenterà la scrittura prima del timeout.
In alto

  NomeDescrizione
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileBeginReadInizia un'operazione di lettura asincrona. (Considerare l'utilizzo di ReadAsync anziché vedere la sezione relativa alle osservazioni).
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileBeginWriteInizia un'operazione di scrittura asincrona. (Considerare l'utilizzo di WriteAsync anziché vedere la sezione relativa alle osservazioni).
Metodo pubblicoSupportato da XNA FrameworkCloseConsente di chiudere il flusso corrente e di liberare le risorse, come socket e handle di file, ad esso associate. Anziché chiamare questo metodo, assicurarsi che il flusso sia eliminato correttamente.
Metodo pubblicoSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreCopyTo(Stream)Legge i byte dal flusso corrente e li scrive in un altro flusso.
Metodo pubblicoSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreCopyTo(Stream, Int32)Legge tutti i byte dal flusso corrente e li scrive in un altro flusso, utilizzando una dimensione di buffer specificata.
Metodo pubblicoSupportato in .NET per applicazioni Windows StoreCopyToAsync(Stream)Legge in modo asincrono i byte dal flusso corrente e li scrive in un altro flusso.
Metodo pubblicoSupportato in .NET per applicazioni Windows StoreCopyToAsync(Stream, Int32)Legge in modo asincrono tutti i byte dal flusso corrente e li scrive in un altro flusso, utilizzando una dimensione di buffer specificata.
Metodo pubblicoSupportato in .NET per applicazioni Windows StoreCopyToAsync(Stream, Int32, CancellationToken)Legge in modo asincrono i byte dal flusso corrente e li scrive in un altro flusso, utilizzando una dimensione di buffer specificata e un token di annullamento.
Metodo pubblicoCreateObjRefConsente 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 protettoSupportato da XNA FrameworkCreateWaitHandle Obsoleta. Assegna un oggetto WaitHandle.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreDispose()Rilascia tutte le risorse utilizzate dalla classe Stream.
Metodo protettoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreDispose(Boolean)Rilascia le risorse non gestite utilizzate dall'oggetto Stream ed eventualmente rilascia le risorse gestite.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileEndReadAttende il completamento della lettura asincrona in sospeso. (Considerare l'utilizzo di ReadAsync anziché vedere la sezione relativa alle osservazioni).
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileEndWriteTermina un'operazione di scrittura asincrona. (Considerare l'utilizzo di WriteAsync anziché vedere la sezione relativa alle osservazioni).
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreEquals(Object) Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object)
Metodo protettoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreFinalize Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulizia prima che l'oggetto stesso venga reclamato dalla procedura di Garbage Collection. (Ereditato da Object)
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreFlushSe 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 pubblicoSupportato in .NET per applicazioni Windows StoreFlushAsync()Consente di cancellare in modo asincrono i dati di tutti i buffer del flusso e la scrittura dei dati memorizzati nel buffer nel dispositivo sottostante.
Metodo pubblicoSupportato in .NET per applicazioni Windows StoreFlushAsync(CancellationToken)Cancella in modo asincrono tutti i buffer del flusso e consente la scrittura dei dati memorizzati nel buffer nel dispositivo sottostante e monitora le richieste di annullamento.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetHashCode Funge da funzione hash per un particolare tipo. (Ereditato da Object)
Metodo pubblicoGetLifetimeServiceConsente di recuperare l'oggetto servizio di durata corrente per controllare i criteri di durata per l'istanza. (Ereditato da MarshalByRefObject)
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetType Ottiene il Type dell'istanza corrente. (Ereditato da Object)
Metodo pubblicoInitializeLifetimeServiceConsente di ottenere un oggetto servizio di durata per il controllo dei criteri di durata per l'istanza. (Ereditato da MarshalByRefObject)
Metodo protettoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreMemberwiseClone() Crea una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo protettoMemberwiseClone(Boolean)Crea una copia dei riferimenti dell'oggetto MarshalByRefObject corrente. (Ereditato da MarshalByRefObject)
Metodo protettoObjectInvariantInfrastruttura. Obsoleta. Fornisce supporto per un Contract.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreReadSe 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 pubblicoSupportato in .NET per applicazioni Windows StoreReadAsync(Byte[], Int32, Int32)Legge in modo asincrono una sequenza di byte dal flusso corrente e fa avanzare la posizione corrente nel flusso del numero di byte letti.
Metodo pubblicoSupportato in .NET per applicazioni Windows StoreReadAsync(Byte[], Int32, Int32, CancellationToken)Legge in modo asincrono una sequenza di byte dal flusso corrente e passa alla posizione successiva all'interno del flusso corrente in base al numero di byte letti e monitora le richieste di annullamento.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreReadByteLegge 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 pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreSeekSe sottoposto a override in una classe derivata, imposta la posizione all'interno del flusso corrente.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreSetLengthSe sottoposto a override in una classe derivata, imposta la lunghezza del flusso corrente.
Metodo pubblicoMembro staticoSynchronizedCrea un wrapper thread-safe (sincronizzato) per l'oggetto Stream specificato.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreWriteSe 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 pubblicoSupportato in .NET per applicazioni Windows StoreWriteAsync(Byte[], Int32, Int32)Scrive in modo asincrono una sequenza di byte nel flusso corrente e fa avanzare la posizione corrente nel flusso del numero di byte scritti.
Metodo pubblicoSupportato in .NET per applicazioni Windows StoreWriteAsync(Byte[], Int32, Int32, CancellationToken)Scrive in modo asincrono una sequenza di byte nel flusso corrente e passa alla posizione successiva all'interno del flusso corrente in base al numero di byte scritti e monitora le richieste di annullamento.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreWriteByteScrive un byte nella posizione corrente del flusso e sposta in avanti di un byte la posizione del flusso.
In alto

  NomeDescrizione
Metodo di estensione pubblicoSupportato in .NET per applicazioni Windows StoreAsInputStreamConverte un flusso gestito in .NET per applicazioni Windows Store in un flusso di input in Windows Runtime. (Definito da WindowsRuntimeStreamExtensions).
Metodo di estensione pubblicoSupportato in .NET per applicazioni Windows StoreAsOutputStreamConverte un flusso gestito in .NET per applicazioni Windows Store in un flusso di output in Windows Runtime. (Definito da WindowsRuntimeStreamExtensions).
In alto

  NomeDescrizione
Campo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreNull Stream privo di archivio di backup.
In alto

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.

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 fa riferimento all'interrogazione e alla 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.

Alcuni dei flussi più comunemente utilizzati che ereditano da Stream sono FileStream e MemoryStream.

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 della classe Stream.

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.

Per questo tipo viene implementata l'interfaccia IDisposable. Una volta terminato l'utilizzo del tipo, si dovrebbe eliminare direttamente o indirettamente. Per eliminare direttamente il tipo, chiamare il metodo Dispose in un blocco try/catch. Per eliminarlo indirettamente, utilizzare un costrutto di linguaggio come using (in C#) o Using (in Visual Basic). Per ulteriori informazioni, consultare la sezione "Utilizzo di un Oggetto che implementa IDisposable" nel capitolo dell'interfaccia IDisposable.

Eliminare un oggetto Stream elimina tutti i dati memorizzati nel buffer e essenzialmente chiama il metodo Flush. Dispose 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.

A partire da .NET Framework 4.5, la classe Stream include metodi async per semplificare le operazioni asincrone. Un metodo async contiene Async nel relativo nome, come ReadAsync, WriteAsync, CopyToAsync e FlushAsync. Questi metodi consentono di eseguire operazioni a elevato utilizzo di risorse di I/O su file senza bloccare il thread principale. Questa considerazione delle prestazioni è particolarmente importante in un'applicazione Windows Store o in un'applicazione desktop dove un'operazione dispendiosa in termini di tempo corrente può bloccare il thread UI, mostrando apparentemente un'applicazione non funzionante. I metodi async vengono utilizzati insieme alle parole chiave await e async in Visual Basic e C#.

Se utilizzato in un'applicazione Windows Store, Stream include due metodi di estensione: AsInputStream e AsOutputStream. Questi metodi convertono un oggetto Stream in un flusso in Windows Runtime. È inoltre possibile convertire un flusso in Windows Runtime in Stream tramite i metodi AsStreamForWrite e AsStreamForRead. Per ulteriori informazioni, vedere Procedura: eseguire la conversione tra flussi di .NET Framework e flussi di Windows Runtime.

Alcune implementazioni di flusso memorizzano nel buffer locale i dati sottostanti per migliorare le prestazioni. Per questi flussi, è possibile utilizzare il metodo Flush o FlushAsync per cancellare il contenuto di eventuali buffer interni e assicurare che tutti i dati siano stati scritti nell'origine dati o nel repository sottostante.

Se è necessario un flusso senza archivio di backup (anche detto un bucket di bit), utilizzare il campo Null per recuperare un'istanza di un flusso progettato per questo scopo.

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 ReadAsync, WriteAsync e CopyToAsync utilizzano i metodi sincroni Read e Write nelle relative implementazioni. Tuttavia, 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. Quando si deriva da Stream, è consigliabile eseguire l'override di questi metodi per accedere del buffer interno, se presente, per ottenere prestazioni migliori. È 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.

TopicLocation
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

L'esempio seguente illustra come utilizzare due oggetti FileStream per copiare i file in modo asincrono da una directory ad un'altra. La classe FileStream deriva dalla classe Stream. Si noti che il gestore eventi Click per il controllo Button è contrassegnato con il modificatore async perché chiama un metodo asincrono.


using System;
using System.Threading.Tasks;
using System.Windows;
using System.IO;

namespace WpfApplication
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            string StartDirectory = @"c:\Users\exampleuser\start";
            string EndDirectory = @"c:\Users\exampleuser\end";

            foreach (string filename in Directory.EnumerateFiles(StartDirectory))
            {
                using (FileStream SourceStream = File.Open(filename, FileMode.Open))
                {
                    using (FileStream DestinationStream = File.Create(EndDirectory + filename.Substring(filename.LastIndexOf('\\'))))
                    {
                        await SourceStream.CopyToAsync(DestinationStream);
                    }
                }
            }
        }
    }
}


.NET Framework

Supportato in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Libreria di classi portabile

Supportato in: Libreria di classi portabile

.NET per applicazioni Windows Store

Supportato in: Windows 8

.NET per applicazioni Windows Phone

Supportato in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

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

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

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft