Console.WriteLine("Contents of StringWriter:\n{0}", strWriter);
}
Console.ReadLine();
Классы StringWriter
StreamWriter порождены от одного и того же базового класса (TextWriter), поэтому логика записи похожа. Тем не менее, с учетом природы StringWriter вы должны также знать, что данный класс позволяет применять метод GetStringBuilder() для извлечения объекта System.Text.StringBuilder:using (StringWriter strWriter = new StringWriter())
{
strWriter.WriteLine("Don't forget Mother's Day this year...");
Console.WriteLine("Contents of StringWriter:\n{0}", strWriter);
// Получить внутренний объект StringBuilder.
StringBuilder sb = strWriter.GetStringBuilder();
sb.Insert(0, "Hey!! ");
Console.WriteLine("-> {0}", sb.ToString());
sb.Remove(0, "Hey!! ".Length);
Console.WriteLine("-> {0}", sb.ToString());
}
Когда необходимо прочитать из потока строковые данные, можно использовать соответствующий тип StringReader
StreamReader. Фактически класс StringReader лишь переопределяет унаследованные члены, чтобы выполнять чтение из блока символьных данных, а не из файла:using (StringWriter strWriter = new StringWriter())
{
strWriter.WriteLine("Don't forget Mother's Day this year...");
Console.WriteLine("Contents of StringWriter:\n{0}", strWriter);
// Читать данные из объекта StringWriter.
using (StringReader strReader = new StringReader(strWriter.ToString()))
{
string input = null;
while ((input = strReader.ReadLine()) != null)
{
Console.WriteLine(input);
}
}
}
Работа с типами BinaryWriter и BinaryReader
Последним набором классов средств чтения и записи, которые рассматриваются в настоящем разделе, являются BinaryWriter
BinaryReader; они оба унаследованы прямо от System.Object. Типы BinaryWriter и BinaryReader позволяют читать и записывать в поток дискретные типы данных в компактном двоичном формате. В классе BinaryWriter определен многократно перегруженный метод Write(), предназначенный для помещения некоторого типа данных в поток. Помимо Write() класс BinaryWriter предоставляет дополнительные члены, которые позволяют получать или устанавливать объекты производных от Stream типов; кроме того, класс BinaryWriter также предлагает поддержку произвольного доступа к данным (табл. 20.10).Класс BinaryReader
BinaryWriter членами, описанными в табл. 20.11.В показанном далее примере (проект консольного приложения по имени BinaryWriterReader
using для System.IO) в файл *.dat записываются данные нескольких типов:using System;
using System.IO;
Console.WriteLine("***** Fun with Binary Writers / Readers *****\n");
// Открыть средство двоичной записи в файл.
FileInfo f = new FileInfo("BinFile.dat");
using(BinaryWriter bw = new BinaryWriter(f.OpenWrite()))
{
// Вывести на консоль тип BaseStream
// (System.IO. Filestream в этом случае).
Console.WriteLine("Base stream is: {0}", bw.BaseStream);
// Создать некоторые данные для сохранения в файле.
double aDouble = 1234.67;
int anInt = 34567;
string aString = "A, B, C";
// Записать данные.
bw.Write(aDouble);
bw.Write(anInt);
bw.Write(aString);
}
Console.WriteLine("Done!");
Console.ReadLine();