Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание

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

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

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

static void Main(string[] args) {
 Console.WriteLine("*** Забавы с StringWriter/StringReader ***n");
 // Создание StringWriter и вывод символьных данных в память.
 StringWriter strWriter = new StringWriter();
 strWriter.WriteLine("He забыть о дне рождения мамы…");
 strWriter.Close();
 // Получение копии содержимого (сохраненного в строке) и
 // вывод на консоль.
 Console.WriteLine("Содержимое StringWriter:n{0}", strWriter);
}

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

static void Main(string[] args) {
 Соnsоlе.WriteLine("*** Забавы с StringWriter/StringReader ***n'');
 …
 // Создание 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 ***n");
 // Создание 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.

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


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