Condividi tramite


FileStream.Flush Metodo

Definizione

Cancella i buffer del flusso e fa sì che i dati memorizzati nel buffer vengano scritti nel file.

Overload

Flush()

Cancella i buffer del flusso e fa sì che i dati memorizzati nel buffer vengano scritti nel file.

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

Flush()

Origine:
FileStream.cs
Origine:
FileStream.cs
Origine:
FileStream.cs

Cancella i buffer del flusso e fa sì che i dati memorizzati nel buffer vengano scritti nel file.

public:
 override void Flush();
public override void Flush ();
override this.Flush : unit -> unit
Public Overrides Sub Flush ()

Eccezioni

Si è verificato un errore di I/O.

Il flusso è chiuso.

Esempio

Questo esempio di codice fa parte di un esempio più grande fornito per il Lock metodo.

// Update the file.
case 'W':
   try
   {
      fileStream->Seek( textLength, SeekOrigin::Begin );
      fileStream->Read( readText, textLength - 1, byteCount );
      tempString = gcnew String( uniEncoding->GetChars( readText, textLength - 1, byteCount ) );
      recordNumber = Int32::Parse( tempString ) + 1;
      fileStream->Seek( textLength, SeekOrigin::Begin );
      fileStream->Write( uniEncoding->GetBytes( recordNumber.ToString() ), 0, byteCount );
      fileStream->Flush();
      Console::WriteLine( "Record has been updated." );
   }
// Update the file.
case 'W':
    try
    {
        fileStream.Seek(textLength,
            SeekOrigin.Begin);
        fileStream.Read(
            readText, textLength - 1, byteCount);
        tempString = new String(
            uniEncoding.GetChars(
            readText, textLength - 1, byteCount));
        recordNumber = int.Parse(tempString) + 1;
        fileStream.Seek(
            textLength, SeekOrigin.Begin);
        fileStream.Write(uniEncoding.GetBytes(
            recordNumber.ToString()),
            0, byteCount);
        fileStream.Flush();
        Console.WriteLine(
            "Record has been updated.");
    }
| 'W' ->
    // Update the file.
    try

        fileStream.Seek(textLength, SeekOrigin.Begin) |> ignore
        fileStream.Read(readText, textLength - 1, byteCount) |> ignore
        tempString <- String(uniEncoding.GetChars readText, textLength - 1, byteCount)
        recordNumber <- Int32.Parse tempString + 1
        fileStream.Seek(textLength, SeekOrigin.Begin) |> ignore
        fileStream.Write(string recordNumber |> uniEncoding.GetBytes, 0, byteCount)
        fileStream.Flush()
        printfn "Record has been updated."
' Update the file.
Case "W"C
    Try
        aFileStream.Seek(textLength, _
            SeekOrigin.Begin)
        aFileStream.Read( _
            readText, textLength - 1, byteCount)
        tempString = New String( _
            uniEncoding.GetChars( _
            readText, textLength - 1, byteCount))
        recordNumber = _
            Integer.Parse(tempString) + 1
        aFileStream.Seek( _
            textLength, SeekOrigin.Begin)
        aFileStream.Write(uniEncoding.GetBytes( _
            recordNumber.ToString()), 0, byteCount)
        aFileStream.Flush()
        Console.WriteLine( _
            "Record has been updated.")

Commenti

Questo metodo esegue l'override di Stream.Flush.

Quando si chiama il metodo, viene scaricato anche il FileStream.Flush buffer di I/O del sistema operativo.

Il codificatore di un flusso non viene scaricato a meno che non si chiami Flush in modo esplicito o non si elimina l'oggetto. L'impostazione StreamWriter.AutoFlush indica true che i dati verranno scaricati dal buffer al flusso, ma lo stato del codificatore non verrà scaricato. Ciò consente al codificatore di mantenere lo stato (caratteri parziali) in modo che possa codificare correttamente il blocco successivo di caratteri. Questo scenario influisce su UTF8 e UTF7 in cui alcuni caratteri possono essere codificati solo dopo che il codificatore riceve il carattere o i caratteri adiacenti.

Poiché un buffer può essere usato per la lettura o la scrittura, Flush() esegue le due funzioni seguenti:

  • Tutti i dati scritti in precedenza nel buffer vengono copiati nel file e il buffer viene cancellato tranne lo stato del codificatore.

  • Se BufferedStream.CanSeek e true i dati sono stati copiati in precedenza dal file al buffer per la lettura, la posizione corrente all'interno del file viene decrementata dal numero di byte non letti nel buffer. Il buffer viene quindi cancellato.

Usare l'overload del Flush(Boolean) metodo quando si vuole assicurarsi che tutti i dati memorizzati nel buffer di file intermedi siano scritti su disco.

Vedi anche

Si applica a

Flush(Boolean)

Origine:
FileStream.cs
Origine:
FileStream.cs
Origine:
FileStream.cs

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.

public:
 virtual void Flush(bool flushToDisk);
public virtual void Flush (bool flushToDisk);
override this.Flush : bool -> unit
Public Overridable Sub Flush (flushToDisk As Boolean)

Parametri

flushToDisk
Boolean

true per svuotare tutti i buffer di file intermedi; in caso contrario, false.

Commenti

Usare questo overload quando si vuole assicurarsi che tutti i dati memorizzati nel buffer di file intermedi vengano scritti su disco.

Quando si chiama il metodo, viene scaricato anche il Flush buffer di I/O del sistema operativo.

Vedi anche

Si applica a