Метод Flush
StreamWriter.Flush передаёт байты
в
Stream.
Без вызова Length у
MemoryStream
может остаться 0. Автосброс
включают через
AutoFlush.
Есть FlushAsync.
Синтаксис
writer.Flush();
Пример
Давайте сравним длину до и после
Flush:
using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
var ms = new MemoryStream();
using (var writer = new StreamWriter(
ms, new UTF8Encoding(false), 1024, leaveOpen: true))
{
writer.Write("abcde");
long before = ms.Length;
writer.Flush();
long after = ms.Length;
Console.WriteLine(before);
Console.WriteLine(after);
}
}
}
Результат выполнения кода:
0
5
Пример
Давайте прочитаем текст после
Flush:
using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
var ms = new MemoryStream();
using (var writer = new StreamWriter(
ms, new UTF8Encoding(false), 1024, leaveOpen: true))
{
writer.Write("abcde");
writer.Flush();
}
ms.Position = 0;
using var reader = new StreamReader(ms, Encoding.UTF8);
string res = reader.ReadToEnd();
Console.WriteLine(res);
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте вызовем Flush после
WriteLine:
using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
var ms = new MemoryStream();
using (var writer = new StreamWriter(
ms, new UTF8Encoding(false), 1024, leaveOpen: true))
{
writer.NewLine = "\n";
writer.WriteLine("12345");
writer.Flush();
}
ms.Position = 0;
using var reader = new StreamReader(ms, Encoding.UTF8);
string res = reader.ReadLine() ?? "";
Console.WriteLine(res);
}
}
Результат выполнения кода:
"12345"
Смотрите также
-
свойство
AutoFlush,
которое сбрасывает буфер само -
метод
Write,
который наполняет буфер -
StreamWriter,
класс, где объявленFlush -
MemoryStream,
куда попадают байты после сброса