FileStream.Flush Método

Definição

Limpa buffers para este fluxo e faz com que quaisquer dados armazenados sejam escritos no ficheiro.

Sobrecargas

Name Description
Flush()

Limpa buffers para este fluxo e faz com que quaisquer dados armazenados sejam escritos no ficheiro.

Flush(Boolean)

Limpa buffers para este fluxo e faz com que quaisquer dados armazenados sejam escritos no ficheiro, além de limpar todos os buffers intermédios de ficheiros.

Flush()

Limpa buffers para este fluxo e faz com que quaisquer dados armazenados sejam escritos no ficheiro.

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

Exceções

Ocorreu um erro de I/O.

O riacho 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 = 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.")

Observações

Este método substitui o Stream.Flush.

Quando chamas o FileStream.Flush método, o buffer de I/O do sistema operativo também é limpo.

O codificador de um stream não é esvaziado a menos que chame Flush ou elimine explicitamente o objeto. Definir StreamWriter.AutoFlush para true significa que os dados serão limpos do buffer para o fluxo, mas o estado do codificador não será esvaziado. Isto permite ao codificador manter o seu estado (caracteres parciais) para que possa codificar corretamente o próximo bloco de caracteres. Este cenário afeta UTF8 e UTF7, onde certos caracteres só podem ser codificados depois de o codificador receber o(s) carácter adjacente(s).

Como um buffer pode ser usado tanto para leitura como para escrita, Flush() desempenha as seguintes duas funções:

  • Quaisquer dados previamente escritos no buffer são copiados para o ficheiro e o buffer é limpo, exceto pelo seu estado de codificador.

  • Se BufferedStream.CanSeek is true e os dados foram previamente copiados do ficheiro para o buffer para leitura, a posição atual dentro do ficheiro é decrementada pelo número de bytes não lidos no buffer. O tampão é então limpo.

Use a Flush(Boolean) sobrecarga de métodos quando quiser garantir que todos os dados armazenados em buffers intermédios de ficheiros são gravados no disco.

Ver também

Aplica-se a

Flush(Boolean)

Limpa buffers para este fluxo e faz com que quaisquer dados armazenados sejam escritos no ficheiro, além de limpar todos os buffers intermédios de ficheiros.

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

Parâmetros

flushToDisk
Boolean

true limpar todos os buffers intermédios de ficheiro; caso contrário, false.

Observações

Use esta sobrecarga quando quiser garantir que todos os dados armazenados em buffers intermédios de ficheiros são gravados no disco.

Quando chamas o Flush método, o buffer de I/O do sistema operativo também é limpo.

Ver também

Aplica-se a