Поделиться через


FileStream.Flush Метод

Определение

Очищает буферы для этого потока и вызывает запись всех буферизованных данных в файл.

Перегрузки

Flush()

Очищает буферы для этого потока и вызывает запись всех буферизованных данных в файл.

Flush(Boolean)

Очищает буферы для этого потока и вызывает запись всех буферизованных данных в файл, а также очищает все буферы промежуточных файлов.

Flush()

Исходный код:
FileStream.cs
Исходный код:
FileStream.cs
Исходный код:
FileStream.cs

Очищает буферы для этого потока и вызывает запись всех буферизованных данных в файл.

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

Исключения

Ошибка ввода/вывода.

Поток закрыт.

Примеры

Этот пример кода является частью более крупного примера, предоставленного Lock для метода .

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

Комментарии

Этот метод переопределяет метод Stream.Flush.

При вызове FileStream.Flush метода буфер ввода-вывода операционной системы также очищается.

Кодировщик потока не сбрасывается, если вы явно не вызовете Flush или не удалите объект . Если задано значение StreamWriter.AutoFlush , true данные будут сбрасываться из буфера в поток, но состояние кодировщика не будет удалено. Это позволяет кодировщику сохранять свое состояние (частичные символы), чтобы правильно кодировать следующий блок символов. Этот сценарий влияет на UTF8 и UTF7, где определенные символы можно закодировать только после того, как кодировщик получит смежные символы или символы.

Так как буфер можно использовать для чтения или записи, Flush() выполняет следующие две функции:

  • Все ранее записанные в буфер данные копируются в файл, и буфер очищается, за исключением состояния кодировщика.

  • Если BufferedStream.CanSeek значение равно true и данные ранее были скопированы из файла в буфер для чтения, текущая позиция в файле уменьшается на количество непрочитанных байтов в буфере. Затем буфер очищается.

Используйте перегрузку Flush(Boolean) метода, если нужно убедиться, что все буферизированные данные в промежуточных файловых буферах записываются на диск.

См. также раздел

Применяется к

Flush(Boolean)

Исходный код:
FileStream.cs
Исходный код:
FileStream.cs
Исходный код:
FileStream.cs

Очищает буферы для этого потока и вызывает запись всех буферизованных данных в файл, а также очищает все буферы промежуточных файлов.

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

Параметры

flushToDisk
Boolean

Значение true для записи на диск буферов всех промежуточных файлов; в противном случае — значение false.

Комментарии

Используйте эту перегрузку, если необходимо убедиться, что все буферизированные данные в промежуточных буферах файлов записываются на диск.

При вызове Flush метода буфер ввода-вывода операционной системы также очищается.

См. также раздел

Применяется к