Класс StreamWriter
StreamWriter наследует
TextWriter
и пишет в
Stream.
Конструктор по умолчанию даёт UTF-8 с
BOM; для текста "abcde" без BOM
берут UTF8Encoding(false) и
leaveOpen: true. Читают через
StreamReader.
Есть *Async.
Синтаксис
using System.Text;
var writer = new StreamWriter(stream);
var writer = new StreamWriter(
stream, new UTF8Encoding(false),
bufferSize: 1024, leaveOpen: true);
Пример
Давайте запишем "abcde" в
MemoryStream:
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"
Пример
Давайте запишем строку через
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("abcde");
writer.Flush();
}
ms.Position = 0;
using var reader = new StreamReader(ms, Encoding.UTF8);
string res = reader.ReadToEnd();
Console.WriteLine(res);
}
}
Результат выполнения кода:
"abcde\n"
Пример
Давайте проверим длину буфера до
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
Смотрите также
-
StreamReader,
который читает записанный текст -
метод
Write,
который пишет фрагмент -
Stream,
куда попадают байты -
MemoryStream,
поток для примеров