Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 216

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 210 211 212 213 214 215 < 216 > 217 218 219 220 221 222 .. 320 >> Следующая

' Класс StreamReader производится от абстрактного класса TextReader, так же как и класс StM ngReader (разговор о нем нам еще предстоит). Базовый класс TextReader
обеспечивает производным классам крайне ограниченный набор возможностей,
в основном, конечно же, связанных с чтением символьных данных.
Для класса StresriW*'ter (так же как и для класса Strirgfe'riter — о нем будет ска -зано позже) базовым является класс TextWriter. Этот класс определяет возможности для записи символьных данных в поток. Отношения между классами System. IG для работы с символьными данными представлены на рис.
536 Глава 11 - Ввод, вывод и сериапюаиуля объектов
Object
TextReader
TextWriter
ч
Stream Re а de г
StringReader
StreamWriter
StringWriter
Рис. 11.10. Иерархия классов StreamReader и StreamWriter
Значительная часть функциональных возможностей класса StreamWriter обеспечивается при помощи членов, унаследованных от TextWriter. Эти члены представлены в табл. 11.11.
Таблица 11.11. Наиболее важные члены базового класса TextWriter
Член
Описание
CiOSeO Закрывает соответствующий объект Writer и освобождает связанные с ним ресурсы. Если в процессе записи используется буфер, он будет автоматически очищен
F(ush() Очищает все буферы для текущего объекта Writer и записывает накопленные в них данные в место постоянного их хранения, но при этом сам объект Writer не закрывается
NewLine Используется для определения последовательности символов, начало
новой строки. По умолчанию используется последовательность «возврат каретки» — «перевод строки» (\г\п)
Записывает новый отрезок текста в поток без применения последовательности начала новой строки
Записывает новую строку в поток (с применением последовательности начала новой строки)
Последние два члена TextWriter из табл. 11.11 выглядят как-то очень знакомо. Действительно, WriteO и Wri teLineC) в TextWriter делают то же самое, что ив System . Console — единственное отличие заключается в том, что отрезок текста или строка выводится не на системную консоль, а в поток (например, в файл).
Производный класс StreamWriter обеспечивает реализацию абстрактных методов WriteC), Cl ose!) и Flush(), а также определяет дополнительное свойство AutoFlush. Если это свойства имеет значение true, то буферы будут очищаться после каждого выполнения операции записи. Конечно, этой возможностью следует пользоваться только в особых случаях, поскольку с точки зрения производительности гораздо эффективнее будет установить для AutoFl ush значение false.
Запись в текстовый файл
Проиллюстрируем работу со StreamWriter на примере. Класс, который мы создадим, будет создавать файл с именем thoughts.txt при помощи класса FHe In Го. Да-
Классы StreamWriter и StreamReader 537
мы используем После
этого мы уже сможем добавлять в файл нужные нам строки текста:
public class HyStreenW-terReader
public static Main(string[]
{ // Создаем файл
Filelnfo f = new FilelnfoC"Thoughts,txt"):
// Получаац объект StreamsWr iter и с его помощью записы&аем в файл // несколько строк текста StreamWriter writer = f .CreateTextO;
writer.WnteCine("Don't forget Mother's Day this year..."): writer.writetineC'Don't forget Father's Day this year..."): writer.Writetine("Don't forget these numbers:");
i 0; i < 10;
t
writer.United + " ");
)
// Вставляем сиивол начала новой строки writer.WriteCwriter.Newtі ne):
// Метод Closet) автоматически очищает все буферы! writer.CloseO:
Console.ifVi;eL¦1IiSi"'i>eated h Ie and wrote some thoughts. .'!;:
Если мы откроем созданный нами файл в Notepad, то сможем увидеть созданное нами его текстовое содержимое (рис. 11.11).
Все очень просто. Отметим только, что методаУгПеОиУігиеІігнгО многократно перегружены, чтобы обеспечить нам самые разные возможности добавления
Считывание информации из текстового файла
Записывать текстовую информацию в файл мы уже умеем. Осталось научиться такую информацию считывать. Как вы, наверное, уже догадались, проще всего это сделать при помощи класса StreamReader. Члены StreamReader, унаследованные от базового клас-caTextReader, представлены в табл. 11.12.
: FB, ?(к Formst Help'
Don't Mother's Day year...
\ Don't forget Father's Day this year. . . Don't forget these numbers: 0123456789
Рис. Содержимое файла thoughts txt.
символьных и числовых данных.
538 Глава 11
Ввод, вывод и сериализация объектов
Таблица 11.12. Наиболее важные члены !сласса TextReader
Член
Описание
Peek?) Возвращает следующий символ, не изменяя позицию указателя в файле
ReadQ Считывает данные из потока на входе
ReadB!ock() Считывает указанное пользователем количество символов, начиная с определенной позиции, и записывает считанные данные в буфер
ReadLineQ Считывает строку данных из текущего потока и возвращает ее как значение типа string. Пустая строка (null string) означает конец файла (EOF)
Считывает все символы, начиная с текущей позиции и до конца и возвращает считанные данные как единое значение типа string
Давайте расширим возможности нашего класса mystrsemwriterreacie' таким образом, чтобы он мог считывать данные при помощи StreamReader из только что созданного нами текстового файла и выводить эти данные на консоль:
Предыдущая << 1 .. 210 211 212 213 214 215 < 216 > 217 218 219 220 221 222 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100