Метод Write
StreamWriter.Write добавляет
символы в буфер писателя. До
Flush
байты могут не попасть в
MemoryStream.
Строку с переводом даёт
WriteLine.
Есть перегрузки и WriteAsync.
Синтаксис
writer.Write("text");
writer.Write(value);
writer.Write(buffer, index, count);
Пример
Давайте запишем "abcde" и сбросим
буфер:
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"
Пример
Давайте допишем "12345" двумя
вызовами:
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.Write("12345");
writer.Flush();
}
ms.Position = 0;
using var reader = new StreamReader(ms, Encoding.UTF8);
string res = reader.ReadToEnd();
Console.WriteLine(res);
}
}
Результат выполнения кода:
"abcde12345"
Пример
Давайте проверим длину потока до
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 res = ms.Length;
Console.WriteLine(res);
}
}
}
Результат выполнения кода:
0
Смотрите также
-
метод
WriteLine,
который добавляет конец строки -
метод
Flush,
который выталкивает буфер -
StreamWriter,
класс, где объявленWrite -
Stream,
приёмник байтов