Stream Classe
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

 

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)

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

System_CAPS_protmethodCreateWaitHandle()

Obsoleto.Alloca un oggetto WaitHandle.

System_CAPS_pubmethodDispose()

Rilascia tutte le risorse usate dall'oggetto 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()

Consente di recuperare l'oggetto servizio di durata corrente per controllare i criteri di durata per l'istanza.(Ereditato da MarshalByRefObject.)

System_CAPS_pubmethodGetType()

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

System_CAPS_pubmethodInitializeLifetimeService()

Consente di ottenere un oggetto servizio di durata per il controllo dei criteri di durata per l'istanza.(Ereditato da MarshalByRefObject.)

System_CAPS_protmethodMemberwiseClone()

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

System_CAPS_protmethodMemberwiseClone(Boolean)

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

System_CAPS_protmethodObjectInvariant()

Obsoleto. Questa API supporta l'infrastruttura di prodotto e non deve 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 di origine online, scaricare il riferimento per la visualizzazione offline e scorrere le origini (incluse le patch e aggiornamenti) durante il 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 separando così il programmatore dai dettagli specifici del sistema operativo e i dispositivi sottostanti.  

I flussi implicano tre operazioni fondamentali:

  • È possibile leggere da flussi.  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.  

  • Flussi di supportare la ricerca.  Ricerca fa riferimento a query e modifica la 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 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 dell'origine dati sottostante o il repository, flussi potrebbero supportare solo alcune di queste funzionalità.  È possibile eseguire query le funzionalità di un flusso utilizzando il CanRead, CanWrite, e CanSeek proprietà della Stream classe.  

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

Questo tipo implementa l'interfaccia IDisposable.   Dopo aver utilizzato il tipo, è necessario eliminarlo direttamente o indirettamente.   Per eliminare direttamente il tipo, chiamare il suo metodo Dispose in un blocco try/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 dell'interfaccia IDisposable.   

Eliminare un Stream oggetto elimina eventuali dati memorizzati nel buffer e chiama essenzialmente il Flush metodo.   Dispose rilascia anche risorse del sistema operativo, ad esempio handle di file, connessioni di rete o memoria utilizzata per eventuali buffer interni.  La BufferedStream classe fornisce la funzionalità di wrapping di un flusso memorizzato nel buffer intorno a un altro flusso per migliorare la lettura e scrittura delle prestazioni.  

Inizia con la .NET Framework 4.5, la Stream classe include i metodi asincroni per semplificare le operazioni asincrone.  Contiene un metodo asincrono Async nel relativo nome, ad esempio ReadAsync, WriteAsync, CopyToAsync, e FlushAsync.  Questi metodi consentono di eseguire operazioni dei / o 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 la async e await parole chiave in Visual Basic e c#.  

Se 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 con il Windows Runtime.  È inoltre possibile convertire un flusso nel Windows Runtime a 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 un 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 repository sottostante.  

Se è necessario un flusso con nessun archivio di backup (noto anche come un bucket di bit), utilizzare il Null campo 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 implementazioni per le Read e Write metodi.  I metodi asincroni ReadAsync, WriteAsync, e CopyToAsync utilizzare i metodi sincroni Read e Write nelle rispettive implementazioni.  Di conseguenza, le implementazioni di Read e Write funzionano 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 da Stream, si consiglia di eseguire l'override di questi metodi per accedere al buffer interno, se si dispone di uno, per migliorare sensibilmente le prestazioni.  È inoltre necessario fornire le implementazioni di CanRead, CanSeek, CanWrite, Flush, Length, Position, Seek, e SetLength.  

Non eseguono l'override il Close metodo, invece, inserire tutte le Stream logica di pulizia nel Dispose metodo.  Per altre informazioni, vedere Implementar un método Dispose.  

Nell'esempio seguente viene illustrato come utilizzare due FileStream gli 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 Click gestore eventi per il Button controllo viene contrassegnato con il async modificatore 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 4.5
.NET Framework
Disponibile da 1.1
Portable Class Library
Supportato in: portable .NET platforms
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1

Eventuali membri pubblici statici (Shared in Visual Basic) di questo tipo sono thread-safe. I membri di istanza non sono garantiti come thread-safe.

Torna all'inizio
Mostra:
© 2016 Microsoft