Метод Flush
Stream.Flush заставляет поток
отдать буфер: у FileStream байты
уходят на диск, у MemoryStream
вызов почти пустой - данные уже в памяти.
После
Write
на файловом потоке Flush полезен
до закрытия. Есть FlushAsync.
Синтаксис
stream.Flush();
Пример
Давайте вызовем Flush после записи
и проверим длину:
using System;
using System.IO;
class Program
{
static void Main()
{
using var ms = new MemoryStream();
ms.Write([1, 2, 3, 4, 5], 0, 5);
ms.Flush();
long res = ms.Length;
Console.WriteLine(res);
}
}
Результат выполнения кода:
5
Пример
Давайте прочитаем байт после Flush:
using System;
using System.IO;
class Program
{
static void Main()
{
using var ms = new MemoryStream();
ms.Write([1, 2, 3, 4, 5], 0, 5);
ms.Flush();
ms.Position = 0;
byte[] buf = new byte[1];
ms.Read(buf, 0, 1);
int res = buf[0];
Console.WriteLine(res);
}
}
Результат выполнения кода:
1
Пример
Давайте допишем байт, снова вызовем
Flush и сравним длину:
using System;
using System.IO;
class Program
{
static void Main()
{
using var ms = new MemoryStream();
ms.Write([1, 2, 3, 4, 5], 0, 5);
ms.Flush();
ms.Write([1], 0, 1);
ms.Flush();
long res = ms.Length;
Console.WriteLine(res);
}
}
Результат выполнения кода:
6