Свойство AutoFlush
StreamWriter.AutoFlush по умолчанию
false. Пока false, после
Write
MemoryStream.Length может быть
0. При true
WriteLine
виден без ручного
Flush.
Синтаксис
writer.AutoFlush = true;
bool on = writer.AutoFlush;
Пример
Давайте проверим значение по умолчанию:
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);
bool res = writer.AutoFlush;
Console.WriteLine(res);
}
}
Результат выполнения кода:
False
Пример
Давайте включим AutoFlush и
вызовем 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.AutoFlush = true;
writer.NewLine = "\n";
writer.WriteLine("abcde");
}
long res = ms.Length;
Console.WriteLine(res);
}
}
Результат выполнения кода:
6
Пример
Давайте без AutoFlush длина останется
0 до 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.WriteLine("abcde");
long before = ms.Length;
writer.Flush();
long after = ms.Length;
Console.WriteLine(before);
Console.WriteLine(after > 0);
}
}
}
Результат выполнения кода:
0
True
Смотрите также
-
метод
Flush,
который сбрасывает буфер вручную -
метод
WriteLine,
который пишет строку -
StreamWriter,
класс, где объявлено свойство -
Stream,
приёмник после сброса