Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Classe Stream

 

Data di pubblicazione: novembre 2016

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

Per esaminare il codice sorgente di .NET Framework per questo tipo, vedere il Reference Source.

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


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

NomeDescrizione
System_CAPS_protmethodStream()

Inizializza una nuova istanza della classe Stream.

NomeDescrizione
System_CAPS_pubpropertyCanRead

Quando ne viene eseguito l'override in una classe derivata, ottiene un valore che indica se il flusso corrente supporta la lettura.

System_CAPS_pubpropertyCanSeek

Quando ne viene eseguito l'override in una classe derivata, ottiene un valore che indica se il flusso corrente supporta la ricerca.

System_CAPS_pubpropertyCanTimeout

Ottiene un valore che determina se il flusso corrente prevede il timeout.

System_CAPS_pubpropertyCanWrite

Quando ne viene eseguito l'override in una classe derivata, ottiene un valore che indica se il flusso corrente supporta la scrittura.

System_CAPS_pubpropertyLength

Quando ne viene eseguito l'override in una classe derivata, ottiene la lunghezza in byte del flusso.

System_CAPS_pubpropertyPosition

Quando ne viene eseguito l'override in una classe derivata, ottiene o imposta la posizione all'interno del flusso corrente.

System_CAPS_pubpropertyReadTimeout

Ottiene o imposta un valore, in millisecondi, che determina per quanto tempo il flusso tenterà la lettura prima del timeout.

System_CAPS_pubpropertyWriteTimeout

Ottiene o imposta un valore, in millisecondi, che determina per quanto tempo il flusso tenterà la scrittura prima del timeout.

NomeDescrizione
System_CAPS_pubmethodBeginRead(Byte[], Int32, Int32, AsyncCallback, Object)

Inizia un'operazione di lettura asincrona. (Considerare, in alternativa, l'uso di ReadAsync. Vedere la sezione Osservazioni).

System_CAPS_pubmethodBeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Inizia un'operazione di scrittura asincrona. (Considerare, in alternativa, l'uso di WriteAsync. Vedere la sezione Osservazioni).

System_CAPS_pubmethodClose()

Chiude il flusso corrente e libera le risorse, come socket e handle di file, ad esso associate. Anziché chiamare questo metodo, assicurarsi che il flusso sia eliminato correttamente.

System_CAPS_pubmethodCopyTo(Stream)

Legge i byte dal flusso corrente e li scrive in un altro flusso.

System_CAPS_pubmethodCopyTo(Stream, Int32)

Legge tutti i byte dal flusso corrente e li scrive in un altro flusso, usando una dimensione di buffer specificata.

System_CAPS_pubmethodCopyToAsync(Stream)

Legge in modo asincrono i byte dal flusso corrente e li scrive in un altro flusso.

System_CAPS_pubmethodCopyToAsync(Stream, Int32)

Legge in modo asincrono tutti i byte dal flusso corrente e li scrive in un altro flusso, usando una dimensione di buffer specificata.

System_CAPS_pubmethodCopyToAsync(Stream, Int32, CancellationToken)

Legge in modo asincrono i byte dal flusso corrente e li scrive in un altro flusso, usando una dimensione di buffer specificata e un token di annullamento.

System_CAPS_pubmethodCreateObjRef(Type)

Crea un oggetto che contiene le informazioni necessarie per generare un proxy utilizzato per comunicare con un oggetto remoto.(Ereditato da MarshalByRefObject.)

System_CAPS_protmethodCreateWaitHandle()

Obsoleto. Alloca un oggetto WaitHandle.

System_CAPS_pubmethodDispose()

Rilascia tutte le risorse usate da Stream.

System_CAPS_protmethodDispose(Boolean)

Rilascia le risorse non gestite usate da Stream e, facoltativamente, le risorse gestite.

System_CAPS_pubmethodEndRead(IAsyncResult)

Attende il completamento della lettura asincrona in sospeso. (Considerare, in alternativa, l'uso di ReadAsync. Vedere la sezione Osservazioni).

System_CAPS_pubmethodEndWrite(IAsyncResult)

Termina un'operazione di scrittura asincrona. (Considerare, in alternativa, l'uso di WriteAsync. Vedere la sezione Osservazioni).

System_CAPS_pubmethodEquals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object.)

System_CAPS_protmethodFinalize()

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

System_CAPS_pubmethodFlush()

Quando ne viene eseguito l'override in una classe derivata, cancella tutti i buffer del flusso e determina la scrittura dei dati memorizzati nel buffer nel dispositivo sottostante.

System_CAPS_pubmethodFlushAsync()

Cancella in modo asincrono i dati di tutti i buffer del flusso e determina la scrittura dei dati memorizzati nel buffer nel dispositivo sottostante.

System_CAPS_pubmethodFlushAsync(CancellationToken)

Cancella in modo asincrono i dati di tutti i buffer del flusso, determina la scrittura dei dati memorizzati nel buffer nel dispositivo sottostante e monitora le richieste di annullamento.

System_CAPS_pubmethodGetHashCode()

Funge da funzione hash predefinita.(Ereditato da Object.)

System_CAPS_pubmethodGetLifetimeService()

Recupera l'oggetto servizio di durata corrente che controlla i criteri di durata per questa istanza.(Ereditato da MarshalByRefObject.)

System_CAPS_pubmethodGetType()

Ottiene l'oggetto Type dell'istanza corrente.(Ereditato da Object.)

System_CAPS_pubmethodInitializeLifetimeService()

Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza.(Ereditato da MarshalByRefObject.)

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.(Ereditato da Object.)

System_CAPS_protmethodMemberwiseClone(Boolean)

Crea una copia superficiale dell'oggetto corrente MarshalByRefObject oggetto.(Ereditato da MarshalByRefObject.)

System_CAPS_protmethodObjectInvariant()

Obsoleto. Questa API supporta l'infrastruttura prodotto e non può essere usata direttamente dal codice. Fornisce supporto per un oggetto Contract.

System_CAPS_pubmethodRead(Byte[], Int32, Int32)

Quando ne viene eseguito l'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.

System_CAPS_pubmethodReadAsync(Byte[], Int32, Int32)

Legge in modo asincrono una sequenza di byte dal flusso corrente e passa alla posizione successiva nel flusso in base al numero di byte letti.

System_CAPS_pubmethodReadAsync(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.

System_CAPS_pubmethodReadByte()

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.

System_CAPS_pubmethodSeek(Int64, SeekOrigin)

Quando ne viene eseguito l'override in una classe derivata, imposta la posizione all'interno del flusso corrente.

System_CAPS_pubmethodSetLength(Int64)

Quando ne viene eseguito l'override in una classe derivata, imposta la lunghezza del flusso corrente.

System_CAPS_pubmethodSystem_CAPS_staticSynchronized(Stream)

Crea un wrapper thread-safe (sincronizzato) per l'oggetto Stream.

System_CAPS_pubmethodToString()

Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object.)

System_CAPS_pubmethodWrite(Byte[], Int32, Int32)

Quando ne viene eseguito l'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.

System_CAPS_pubmethodWriteAsync(Byte[], Int32, Int32)

Scrive in modo asincrono una sequenza di byte nel flusso corrente e passa alla posizione successiva nel flusso in base al numero di byte scritti.

System_CAPS_pubmethodWriteAsync(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.

System_CAPS_pubmethodWriteByte(Byte)

Scrive un byte nella posizione corrente del flusso e sposta in avanti di un byte la posizione del flusso.

NomeDescrizione
System_CAPS_pubfieldSystem_CAPS_staticNull

Oggetto Stream privo di archivio di backup.

System_CAPS_noteNota

Per visualizzare il codice sorgente di .NET Framework per questo tipo, vedere il Reference Source. È possibile esplorare il codice sorgente online, scaricare i riferimenti per la visualizzazione offline e scorrere le origini (inclusi aggiornamenti e patch) durante l'esecuzione del debug. see instructions.

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, una pipe di comunicazione tra processi o un socket TCP/IP. La Stream classe e le relative classi derivate forniscono una visualizzazione generica di questi diversi tipi di input e output e così il programmatore dai dettagli specifici del sistema operativo e i dispositivi sottostanti.

I flussi implicano tre operazioni fondamentali:

  • È possibile leggere da flussi. La lettura è il trasferimento dei dati da un flusso in una struttura di dati, ad esempio una matrice di byte.

  • È possibile scrivere nei flussi. La scrittura è il trasferimento dei dati da una struttura di dati in un flusso.

  • La ricerca. La ricerca fa riferimento a una query e modifica della posizione corrente all'interno di un flusso. Ricerca funzionalità dipende dal tipo di archivio di backup è un flusso. Flussi di rete, ad esempio, non includono alcun concetto unificato di una posizione corrente e pertanto in genere non supportano la ricerca.

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

A seconda origine dati sottostante o nell'archivio, flussi potrebbero supportare solo alcune di queste funzionalità. È possibile eseguire una query le funzionalità di un flusso utilizzando il CanRead, CanWrite, e CanSeek proprietà la Stream classe.

Il Read e Write metodi leggere e scrivere dati in una vasta gamma di formati. Per i flussi che supportano la ricerca, utilizzare il Seek e SetLength metodi e Position e Length le proprietà per eseguire una query e modificare la posizione corrente e la lunghezza di un flusso.

Questo tipo implementa il IDisposable interfaccia. Dopo aver utilizzato il tipo, è necessario eliminarlo direttamente o indirettamente. Per eliminare direttamente il tipo, chiamare il metodo Dispose in un bloccotry / catch. Per eliminarlo indirettamente, utilizzare un costrutto di linguaggio come ad esempio using in C# o Using in Visual Basic. Per ulteriori informazioni, consultare la sezione "Utilizzo di oggetti che implementano IDisposable" nell'argomento IDisposable dell'interfaccia.

Eliminazione di un Stream oggetto Scarica tutti i dati memorizzati nel buffer e chiama essenzialmente la Flush metodo. Disposerilascia inoltre le risorse del sistema operativo, ad esempio gli handle di file, le connessioni di rete o memoria utilizzata per qualsiasi buffer interni. La BufferedStream classe fornisce la funzionalità del wrapping di un flusso memorizzato nel buffer intorno a un altro flusso per migliorare la lettura e scrittura delle prestazioni.

A partire dal .NET Framework 4.5, Stream classe include metodi asincroni per semplificare le operazioni asincrone. Contiene un metodo asincrono Async nel nome, ad esempio ReadAsync, WriteAsync, CopyToAsync, e FlushAsync. Questi metodi consentono di eseguire operazioni dei / o elevato utilizzo di risorse senza bloccare il thread principale. Questa considerazione sulle prestazioni è particolarmente importante in un'applicazione Windows 8.x Store o desktop in cui tramite un'operazione di flusso per cui è richiesto molto tempo è possibile bloccare il thread UI e far sembrare che l'applicazione non funzioni. I metodi asincroni vengono utilizzati in combinazione con il async e await parole chiave in Visual Basic e c#.

Quando utilizzato in un Windows 8.x Store app, Stream include due metodi di estensione: AsInputStream e AsOutputStream. Questi metodi consentono di convertire un Stream oggetto in un flusso di Windows Runtime. È anche possibile convertire un flusso di Windows Runtime per un Stream oggetto utilizzando il AsStreamForRead e AsStreamForWrite metodi. Per altre informazioni, vedere Procedura: eseguire la conversione tra flussi di .NET Framework e flussi di Windows Runtime.

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

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

Note per gli implementatori:

Quando si implementa una classe derivata di Stream, è necessario fornire implementazioni per le Read e Write metodi. I metodi asincroni ReadAsync, WriteAsync, e CopyToAsync utilizza metodi sincroni Read e Write nelle rispettive implementazioni. Pertanto, le implementazioni di Read e Write funzioneranno correttamente con i metodi asincroni. Le implementazioni predefinite di ReadByte e WriteByte creare una nuova matrice di byte a elemento singolo e quindi chiamare le implementazioni di Read e Write. Quando si deriva dalla Stream, si consiglia di eseguire l'override di questi metodi per accedere al buffer interno, se presente, per migliorare notevolmente le prestazioni. È inoltre necessario fornire le implementazioni di CanRead, CanSeek, CanWrite, Flush, Length, Position, Seek, e SetLength.

Non eseguire l'override di Close (metodo), invece, inserire tutte la Stream logica di pulizia nel Dispose (metodo). Per altre informazioni, vedere Implementazione di un metodo Dispose.

Nell'esempio seguente viene illustrato come utilizzare due FileStream oggetti da copiare in modo asincrono i file da una directory in un'altra directory. 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);
                    }
                }
            }
        }
    }
}

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 1.1
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1

I membri statici pubblici ( Condiviso in Visual Basic) di questo tipo è thread safe. Non tutti i membri di istanza sono garantiti come thread safe.

Torna all'inizio
Mostra: