Книга: C# 4.0: полное руководство

Применение классов StringReader и StringWriter

Применение классов StringReader и StringWriter

Для выполнения операций ввода-вывода с запоминанием в некоторых приложениях в качестве базовой памяти иногда лучше использовать массив типа string, чем массив типа byte. Именно для таких случаев и предусмотрены классы StringReader и StringWriter. В частности, класс StringReader наследует от класса TextReader, а класс StringWriter — от класса TextWriter. Следовательно, они представляют собой потоки, имеющие доступ к методам, определенным в этих двух базовых классах, что позволяет, например, вызывать метод ReadLine() для объекта класса StringReader, а метод WriteLine() — для объекта класса StringWriter.

Ниже приведен конструктор класса StringReader:

StringReader(string s)

где s обозначает символьную строку, из которой производится чтение.

В классе StringWriter определено несколько конструкторов. Ниже представлен один из наиболее часто используемых.

StringWriter()

Этот конструктор создает записывающий поток, который помещает выводимые данные в строку. Для получения содержимого этой строки достаточно вызвать метод ToString().

Ниже приведен пример, демонстрирующий применение классов StringReader и StringWriter.

// Продемонстрировать применение классов StringReader и StringWriter.
using System; using
System.IO;
class StrRdrWtrDemo {
  static void Main() {
    StringWriter strwtr = null;
    StringReader strrdr = null;
    try {
      // Создать объект класса StringWriter.
      strwtr = new StringWriter();
      // Вывести данные в записывающий поток типа StringWriter.
      for (int i=0; i < 10; i++)
        strwtr.WriteLine("Значение i равно: " + i);
      // Создать объект класса StringReader.
      strrdr = new StringReader(strwtr.ToString());
      //А теперь ввести данные из считывающего
      // потока типа StringReader.
      string str = strrdr.ReadLine();
      while(str != null) {
        str = strrdr.ReadLine();
        Console.WriteLine(str);
      }
    } catch(IOException exc) {
      Console.WriteLine("Ошибка ввода-вывода" + exc.Message);
    } finally {
      // Освободить ресурсы считывающего и записывающего потоков,
      if(strrdr != null) strrdr.Close();
      if(strwtr != null) strwtr.Close();
    }
  }
}

Вот к каком результату приводит выполнение этого кода.

Значение i равно: 1
Значение i равно: 2
Значение i равно: 3
Значение i равно: 4
Значение i равно: 5
Значение i равно: 6
Значение i равно: 7
Значение i равно: 8
Значение i равно: 9

В данном примере сначала создается объект strwtr класса StringWriter, в который выводятся данные с помощью метода WriteLine(). Затем создается объект класса StringReader с использованием символьной строки, содержащейся в объекте strwtr. Эта строка получается в результате вызова метода ToString() для объекта strwtr. И наконец, содержимое данной строки считывается с помощью метода ReadLine().

Оглавление книги


Генерация: 1.316. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз