Compartilhar via


FileStream.Flush Método

Definição

Limpa os buffers desse fluxo e faz com que todos os dados armazenados em buffer sejam gravados no arquivo.

Sobrecargas

Flush()

Limpa os buffers desse fluxo e faz com que todos os dados armazenados em buffer sejam gravados no arquivo.

Flush(Boolean)

Limpa os buffers desse fluxo e faz com que os dados armazenados em buffer sejam gravados no arquivo e também limpa todos os buffers de arquivo intermediário.

Flush()

Origem:
FileStream.cs
Origem:
FileStream.cs
Origem:
FileStream.cs

Limpa os buffers desse fluxo e faz com que todos os dados armazenados em buffer sejam gravados no arquivo.

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

Exceções

Ocorreu um erro de E/S.

O fluxo está fechado.

Exemplos

Este exemplo de código faz parte de um exemplo maior fornecido para o Lock método .

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

Comentários

Este método substitui Stream.Flush.

Quando você chama o FileStream.Flush método , o buffer de E/S do sistema operacional também é liberado.

O codificador de um fluxo não é liberado, a menos que você chame Flush ou descarte explicitamente o objeto. Definir StreamWriter.AutoFlush como true significa que os dados serão liberados do buffer para o fluxo, mas o estado do codificador não será liberado. Isso permite que o codificador mantenha seu estado (caracteres parciais) para que ele possa codificar o próximo bloco de caracteres corretamente. Esse cenário afeta UTF8 e UTF7, em que determinados caracteres só podem ser codificados depois que o codificador recebe o caractere ou caracteres adjacentes.

Como um buffer pode ser usado para leitura ou gravação, Flush() executa as duas funções a seguir:

  • Todos os dados gravados anteriormente no buffer são copiados para o arquivo e o buffer é limpo, exceto pelo estado do codificador.

  • Se BufferedStream.CanSeek for true e os dados tiverem sido copiados anteriormente do arquivo para o buffer para leitura, a posição atual dentro do arquivo será decrementada pelo número de bytes não lidos no buffer. Em seguida, o buffer é limpo.

Use a sobrecarga do Flush(Boolean) método quando quiser garantir que todos os dados armazenados em buffer em buffers de arquivos intermediários sejam gravados em disco.

Confira também

Aplica-se a

Flush(Boolean)

Origem:
FileStream.cs
Origem:
FileStream.cs
Origem:
FileStream.cs

Limpa os buffers desse fluxo e faz com que os dados armazenados em buffer sejam gravados no arquivo e também limpa todos os buffers de arquivo intermediário.

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

Parâmetros

flushToDisk
Boolean

true para limpar todos os buffers de arquivo intermediário; caso contrário, false.

Comentários

Use essa sobrecarga quando quiser garantir que todos os dados armazenados em buffer em buffers de arquivos intermediários sejam gravados em disco.

Quando você chama o Flush método , o buffer de E/S do sistema operacional também é liberado.

Confira também

Aplica-se a