Работа с типами StringWriter и StringReader

Работа с типами StringWriter и StringReader

Используя типы StringWriter и StringReader, вы можете обращаться с текстовой информацией, как с потоком символов в памяти. Это может оказаться полезным тогда, когда необходимо добавить символьную информацию в соответствующий буфер. В следующем примере блок строковых данных записывается в объект StringWriter, а не в файл на локальном жестком диске.

static void Main(string[] args) {

 Console.WriteLine("*** Забавы с StringWriter/StringReader *** ");

 // Создание StringWriter и вывод символьных данных в память.

 StringWriter strWriter = new StringWriter();

 strWriter.WriteLine("He забыть о дне рождения мамы…");

 strWriter.Close();

 // Получение копии содержимого (сохраненного в строке) и

 // вывод на консоль.

 Console.WriteLine("Содержимое StringWriter: {0}", strWriter);

}

Ввиду того, что и StringWriter, и StreamWriter получаются из одного и того же базового класса (TextWriter), для них используется приблизительно одинаковая программная логика записи. Однако ввиду самой своей природы, класс StringWriter позволяет извлечь объект System.Text.StringBuilder с помощью метода GetStringBuilder().

static void Main(string[] args) {

 Соnsоlе.WriteLine("*** Забавы с StringWriter/StringReader *** ');

 …

 // Создание StringWriter и вывод символьных данных в память.

 StringWriter strWriter = new StringWriter();

 …

 // Получение внутреннего StringBuilder.

 StringBuilder sb = strWriter.GetStringBuilder();

 sb.Insert(0, "Эй!! ");

 Console.WriteLine("-› {0}", sb.ToString());

 sb.Remove(0, "Эй!! ".Length);

 Console.WriteLine("-› {0}", sb.ToString());

}

Чтобы прочитать данные из символьного потока, используйте соответствующий тип StringReader, который (в соответствии с ожиданиями) функционирует так же, как и родственный ему класс StreamReader. Фактически класс StringReader просто переопределяет наследуемые члены, чтобы обеспечить чтение из блока символьных данных, а не из файла.

static void Main(string[] args) {

 Console.WriteLine("*** Забавы с StringWriter/StringReader *** ");

 // Создание StringWriter и вывод символьных данных в память.

 StringWriter strWriter = new StringWriter();

 …

 // Чтение данных из StringWriter.

 StringReader strReader = new StringReader(writer.ToString());

 string input = null;

 while ((input = strReader.ReadLine()) != null) {

  Console.WriteLine(input);

 }

 strReader.Close();

}

Исходный код. Проект StringWriterReaderApp размещен в подкаталоге, соответствующем главе 16.