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 FileStream

 

Data di pubblicazione: novembre 2016

Fornisce un oggetto Stream per un file, con il supporto di operazioni di lettura e scrittura sincrone e asincrone.

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)


[ComVisibleAttribute(true)]
public class FileStream : Stream

NomeDescrizione
System_CAPS_pubmethodFileStream(IntPtr, FileAccess)

Obsoleto. Inizializza una nuova istanza della classe FileStream per l'handle di file specificato, con l'autorizzazione di lettura/scrittura specificata.

System_CAPS_pubmethodFileStream(IntPtr, FileAccess, Boolean)

Obsoleto. Inizializza una nuova istanza della classe FileStream per l'handle di file specificato, con l'autorizzazione di lettura/scrittura e la proprietà dell'istanza di FileStream.

System_CAPS_pubmethodFileStream(IntPtr, FileAccess, Boolean, Int32)

Obsoleto. Inizializza una nuova istanza della classe FileStream per l'handle di file specificato, con l'autorizzazione di lettura/scrittura, la proprietà dell'istanza di FileStream e la dimensione del buffer specificate.

System_CAPS_pubmethodFileStream(IntPtr, FileAccess, Boolean, Int32, Boolean)

Obsoleto. Inizializza una nuova istanza della classe FileStream per l'handle di file specificato, con l'autorizzazione di lettura/scrittura, la proprietà dell'istanza di FileStream, la dimensione del buffer e lo stato sincrono o asincrono specificati.

System_CAPS_pubmethodFileStream(SafeFileHandle, FileAccess)

Inizializza una nuova istanza della classe FileStream per l'handle di file specificato, con l'autorizzazione di lettura/scrittura specificata.

System_CAPS_pubmethodFileStream(SafeFileHandle, FileAccess, Int32)

Inizializza una nuova istanza della classe FileStream per l'handle di file specificato, con l'autorizzazione di lettura/scrittura e la dimensione del buffer specificate.

System_CAPS_pubmethodFileStream(SafeFileHandle, FileAccess, Int32, Boolean)

Inizializza una nuova istanza della classe FileStream per l'handle di file specificato, con l'autorizzazione di lettura/scrittura, la dimensione del buffer e lo stato sincrono o asincrono specificati.

System_CAPS_pubmethodFileStream(String, FileMode)

Inizializza una nuova istanza della classe FileStream con il percorso e la modalità di creazione specificati.

System_CAPS_pubmethodFileStream(String, FileMode, FileAccess)

Inizializza una nuova istanza della classe FileStream con il percorso, la modalità di creazione e l'autorizzazione di lettura/scrittura specificati.

System_CAPS_pubmethodFileStream(String, FileMode, FileAccess, FileShare)

Inizializza una nuova istanza della classe FileStream con il percorso, la modalità di creazione, l'autorizzazione di lettura/scrittura e l'autorizzazione di condivisione specificati.

System_CAPS_pubmethodFileStream(String, FileMode, FileAccess, FileShare, Int32)

Inizializza una nuova istanza della classe FileStream con il percorso, la modalità di creazione, l'autorizzazione di lettura/scrittura e condivisione e la dimensione del buffer specificati.

System_CAPS_pubmethodFileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean)

Inizializza una nuova istanza della classe FileStream con il percorso, la modalità di creazione, l'autorizzazione di lettura/scrittura e condivisione, la dimensione del buffer e lo stato sincrono o asincrono specificati.

System_CAPS_pubmethodFileStream(String, FileMode, FileAccess, FileShare, Int32, FileOptions)

Inizializza una nuova istanza della classe FileStream con il percorso, la modalità di creazione, l'autorizzazione di lettura/scrittura e condivisione, l'accesso consentito ad altri FileStream allo stesso file, la dimensione del buffer e le opzioni aggiuntive del file specificati.

System_CAPS_pubmethodFileStream(String, FileMode, FileSystemRights, FileShare, Int32, FileOptions)

Inizializza una nuova istanza della classe FileStream con il percorso, la modalità di creazione, i diritti di accesso e l'autorizzazione di condivisione, la dimensione del buffer e le opzioni aggiuntive del file specificati.

System_CAPS_pubmethodFileStream(String, FileMode, FileSystemRights, FileShare, Int32, FileOptions, FileSecurity)

Inizializza una nuova istanza della classe FileStream con il percorso, la modalità di creazione, i diritti di accesso e l'autorizzazione di condivisione, la dimensione del buffer, le opzioni aggiuntive del file, il controllo di accesso e la sicurezza di controllo specificati.

NomeDescrizione
System_CAPS_pubpropertyCanRead

Ottiene un valore che indica se il flusso corrente supporta la lettura.(Esegue l'override di Stream.CanRead.)

System_CAPS_pubpropertyCanSeek

Ottiene un valore che indica se il flusso corrente supporta la ricerca.(Esegue l'override di Stream.CanSeek.)

System_CAPS_pubpropertyCanTimeout

Ottiene un valore che determina se il flusso corrente prevede il timeout.(Ereditato da Stream.)

System_CAPS_pubpropertyCanWrite

Ottiene un valore che indica se il flusso corrente supporta la scrittura.(Esegue l'override di Stream.CanWrite.)

System_CAPS_pubpropertyHandle

Obsoleto. Ottiene l'handle di file del sistema operativo per il file incapsulato dall'oggetto FileStream.

System_CAPS_pubpropertyIsAsync

Ottiene un valore che indica se FileStream è stato aperto in modalità sincrona o asincrona.

System_CAPS_pubpropertyLength

Ottiene la lunghezza in byte del flusso.(Esegue l'override di Stream.Length.)

System_CAPS_pubpropertyName

Ottiene il nome dell'oggetto FileStream passato al costruttore.

System_CAPS_pubpropertyPosition

Ottiene o imposta la posizione corrente del flusso.(Esegue l'override di Stream.Position.)

System_CAPS_pubpropertyReadTimeout

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

System_CAPS_pubpropertySafeFileHandle

Ottiene un oggetto SafeFileHandle che rappresenta l'handle di file del sistema operativo per il file incapsulato dall'oggetto FileStream corrente.

System_CAPS_pubpropertyWriteTimeout

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

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).(Esegue l'override di Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).)

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).(Esegue l'override di Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object).)

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.(Ereditato da Stream.)

System_CAPS_pubmethodCopyTo(Stream)

Legge i byte dal flusso corrente e li scrive in un altro flusso.(Ereditato da Stream.)

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.(Ereditato da Stream.)

System_CAPS_pubmethodCopyToAsync(Stream)

Legge in modo asincrono i byte dal flusso corrente e li scrive in un altro flusso.(Ereditato da Stream.)

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.(Ereditato da Stream.)

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.(Ereditato da Stream.)

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.(Ereditato da Stream.)

System_CAPS_pubmethodDispose()

Rilascia tutte le risorse usate da Stream.(Ereditato da Stream.)

System_CAPS_protmethodDispose(Boolean)

Rilascia le risorse non gestite usate da FileStream e, facoltativamente, le risorse gestite.(Esegue l'override di Stream.Dispose(Boolean).)

System_CAPS_pubmethodEndRead(IAsyncResult)

Attende il completamento dell'operazione di lettura asincrona in sospeso. (Considerare, in alternativa, l'uso di ReadAsync. Vedere la sezione Osservazioni).(Esegue l'override di Stream.EndRead(IAsyncResult).)

System_CAPS_pubmethodEndWrite(IAsyncResult)

Termina un'operazione di scrittura asincrona, rimanendo bloccato fino al completamento dell'operazione di I/O. (Considerare, in alternativa, l'uso di WriteAsync. Vedere la sezione Osservazioni).(Esegue l'override di Stream.EndWrite(IAsyncResult).)

System_CAPS_pubmethodEquals(Object)

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

System_CAPS_protmethodFinalize()

Garantisce che le risorse vengano liberate e le altre operazioni di pulizia vengano completate quando l'oggetto FileStream viene recuperato da Garbage Collector.(Esegue l'override di Object.Finalize().)

System_CAPS_pubmethodFlush()

Cancella i buffer del flusso e fa sì che i dati memorizzati nel buffer vengano scritti nel file.(Esegue l'override di Stream.Flush().)

System_CAPS_pubmethodFlush(Boolean)

Cancella i buffer del flusso e fa sì che i dati memorizzati nei buffer vengano scritti nel file, cancellando anche tutti i buffer di file intermedi.

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.(Ereditato da Stream.)

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.(Esegue l'override di Stream.FlushAsync(CancellationToken).)

System_CAPS_pubmethodGetAccessControl()

Ottiene un oggetto FileSecurity che incapsula le voci dell'elenco di controllo di accesso (ACL) per il file descritto dall'oggetto FileStream corrente.

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_pubmethodLock(Int64, Int64)

Impedisce ad altri processi di leggere o scrivere nell'oggetto FileStream.

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.(Ereditato da Stream.)

System_CAPS_pubmethodRead(Byte[], Int32, Int32)

Legge un blocco di byte dal flusso e scrive i dati in un determinato buffer.(Esegue l'override di Stream.Read(Byte[], Int32, Int32).)

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.(Ereditato da Stream.)

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.(Esegue l'override di Stream.ReadAsync(Byte[], Int32, Int32, CancellationToken).)

System_CAPS_pubmethodReadByte()

Legge un byte dal file e sposta in avanti di un byte la posizione di lettura.(Esegue l'override di Stream.ReadByte().)

System_CAPS_pubmethodSeek(Int64, SeekOrigin)

Imposta la posizione corrente del flusso sul valore dato.(Esegue l'override di Stream.Seek(Int64, SeekOrigin).)

System_CAPS_pubmethodSetAccessControl(FileSecurity)

Applica le voci dell'elenco di controllo di accesso (ACL) descritte da un oggetto FileSecurity nel file specificato dall'oggetto FileStream corrente.

System_CAPS_pubmethodSetLength(Int64)

Imposta la lunghezza del flusso sul valore dato.(Esegue l'override di Stream.SetLength(Int64).)

System_CAPS_pubmethodToString()

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

System_CAPS_pubmethodUnlock(Int64, Int64)

Consente ad altri processi di accedere a una parte o a tutto il file bloccato in precedenza.

System_CAPS_pubmethodWrite(Byte[], Int32, Int32)

Scrive un blocco di byte nel flusso di file.(Esegue l'override di Stream.Write(Byte[], Int32, Int32).)

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.(Ereditato da Stream.)

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.(Esegue l'override di Stream.WriteAsync(Byte[], Int32, Int32, CancellationToken).)

System_CAPS_pubmethodWriteByte(Byte)

Scrive un byte nella posizione corrente all'interno del flusso di file.(Esegue l'override di Stream.WriteByte(Byte).)

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.

Utilizzare la FileStream classe per leggere, scrivere per aprire e chiudere i file in un file system e per modificare altri handle del sistema operativo relativi a file, tra cui pipe standard di input e output standard. È possibile utilizzare il Read, Write, CopyTo, e Flush metodi per eseguire operazioni sincrone, o ReadAsync, WriteAsync, CopyToAsync, e FlushAsync metodi per eseguire operazioni asincrone. Utilizzare i metodi asincroni per eseguire operazioni sui file 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. FileStream buffer di input e output per ottenere prestazioni migliori.

System_CAPS_importantImportante

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.

Il IsAsync proprietà rileva se l'handle di file è stato aperto in modo asincrono. Si specifica questo valore quando si crea un'istanza di FileStream classe utilizzando un costruttore che ha un isAsync, useAsync, o options parametro. Quando la proprietà è true, utilizza il flusso dei / o sovrapposte per eseguire operazioni sui file in modo asincrono. Tuttavia, la IsAsync proprietà non deve essere true per chiamare il ReadAsync, WriteAsync, o CopyToAsync (metodo). Quando il IsAsync è false e si chiama la lettura asincrona e le operazioni di scrittura, il thread dell'interfaccia utente ancora non è bloccato, ma l'operazione dei / o effettiva viene eseguita in modo sincrono.

Il Seek metodo supporta l'accesso casuale ai file. Seek consente la posizione di lettura/scrittura deve essere spostato in qualsiasi posizione all'interno del file. Questa operazione viene eseguita con i parametri di punto di riferimento di offset di byte. È l'offset di byte rispetto al punto di riferimento di ricerca, che può essere l'inizio, la posizione corrente o alla fine del file sottostante, come rappresentato da tre membri del SeekOrigin enumerazione.

System_CAPS_noteNota

I file del disco supportano sempre l'accesso casuale. Al momento della costruzione, la CanSeek proprietà è impostato su true o false a seconda del tipo di file sottostante. Se il tipo di file sottostante è FILE_TYPE_DISK, come definito in winbase. h, il CanSeek valore della proprietà è true. In caso contrario, il CanSeek valore della proprietà è false.

Se un processo termina con una parte di un file bloccato o chiude un file con blocchi in attesa, il comportamento è indefinito.

Per operazioni di directory e altri file, vedere il File, Directory, e Path classi. La File classe è una classe di utilità che dispone di metodi statici principalmente per la creazione di FileStream gli oggetti in base ai percorsi di file. La MemoryStream classe crea un flusso da una matrice di byte ed è simile al FileStream (classe).

Per un elenco di operazioni di directory e file comuni, vedere Attività di I/O comuni.

Quando un FileStream oggetto non dispone di un blocco esclusivo nel relativo handle, un altro thread può accedere simultaneamente l'handle di file e modificare la posizione del puntatore del file del sistema operativo che è associato l'handle di file. In questo caso, la posizione memorizzata nella cache il FileStream oggetto e i dati memorizzati nel buffer potrebbero essere compromessa. Il FileStream oggetto esegue regolarmente controlli sui metodi che accedono al buffer memorizzato nella cache per garantire che posizione dell'handle del sistema operativo sia uguale alla posizione memorizzata nella cache utilizzata per il FileStream oggetto.

Se viene rilevata una modifica imprevista della posizione dell'handle in una chiamata al Read (metodo), .NET Framework elimina il contenuto del buffer e legge il flusso dal file nuovamente. Ciò può influire sulle prestazioni, a seconda delle dimensioni del file e tutti gli altri processi che possono influenzare la posizione del flusso di file.

Se viene rilevata una modifica imprevista della posizione dell'handle in una chiamata al Write (metodo), il contenuto del buffer vengono ignorati e un IOException viene generata un'eccezione.

Un FileStream oggetto disporrà di un blocco esclusivo nel relativo handle quando entrambi i SafeFileHandle per esporre l'handle di cui si accede alla proprietà o FileStream oggetto viene assegnato il SafeFileHandle proprietà nel relativo costruttore.

Nell'esempio seguente vengono illustrate alcune delle FileStream costruttori.

using System;
using System.IO;
using System.Text;

class Test
{

    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // Delete the file if it exists.
        if (File.Exists(path))
        {
            File.Delete(path);
        }

        //Create the file.
        using (FileStream fs = File.Create(path))
        {
            AddText(fs, "This is some text");
            AddText(fs, "This is some more text,");
            AddText(fs, "\r\nand this is on a new line");
            AddText(fs, "\r\n\r\nThe following is a subset of characters:\r\n");

            for (int i=1;i < 120;i++)
            {
                AddText(fs, Convert.ToChar(i).ToString());

            }
        }

        //Open the stream and read it back.
        using (FileStream fs = File.OpenRead(path))
        {
            byte[] b = new byte[1024];
            UTF8Encoding temp = new UTF8Encoding(true);
            while (fs.Read(b,0,b.Length) > 0)
            {
                Console.WriteLine(temp.GetString(b));
            }
        }
    }

    private static void AddText(FileStream fs, string value)
    {
        byte[] info = new UTF8Encoding(true).GetBytes(value);
        fs.Write(info, 0, info.Length);
    }
}

Nell'esempio seguente viene illustrato come scrivere in un file in modo asincrono. Questo codice viene eseguito in un'applicazione WPF che dispone di un elemento TextBlock denominati UserInput e un pulsante associata a un gestore eventi Click denominato Button_Click. Il percorso del file deve essere modificata in un file di chiusura del computer.

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

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

        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            UnicodeEncoding uniencoding = new UnicodeEncoding();
            string filename = @"c:\Users\exampleuser\Documents\userinputlog.txt";

            byte[] result = uniencoding.GetBytes(UserInput.Text);

            using (FileStream SourceStream = File.Open(filename, FileMode.OpenOrCreate))
            {
                SourceStream.Seek(0, SeekOrigin.End);
                await SourceStream.WriteAsync(result, 0, result.Length);
            }
        }
    }
}

Universal Windows Platform
Disponibile da 10
.NET Framework
Disponibile da 1.1
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0

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: