Читать «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание» онлайн - страница 390
Эндрю Троелсен
static void Main(string[] args) {
Console.WriteLine("*** Забавы с StreamWriter/StreamReader ***\n");
// Получение StreamWriter и запись строковых данных.
StreamWriter writer = File.CreateText("reminders.txt");
writer.WriteLine("Нe забыть о дне рождения мамы…");
writer.WriteLine("Не забыть о дне рождения папы…");
writer.WriteLine("Не забыть о следующих числах:");
for(int i = 0; i ‹ 10; i++) writer.Write(i + " ");
// вставка новой строки.
writer.Write(writer.NewLine);
// Закрытие автоматически влечет запись всех оставшихся данных!
writer.Close();
Console.WriteLine("Создан файл и записаны некоторые идеи…");
}
Выполнив эту программу, вы можете проверить содержимое нового файла (рис. 16.8).
Рис. 16.8. Содержимое вашего файла
Чтение из текстового файла
Теперь выясним, как программными средствами читать данные из файла, используя соответствующий тип StreamReader. Вы должны помнить, что этот класс получается из TextReader, функциональные возможности которого описаны в табл. 16.8.
Таблица 16.8. Основные члены TextReader
Член | Описание |
---|---|
Peek() | Возвращает следующий доступный символ без фактического изменения позиции указателя считывающего объекта. Значение -1 указывает позицию, соответствующую концу потока |
Read() | Читает данные входного потока |
ReadBlock() | Читает максимальное заданное число символов текущего потока и записывает данные в буфер, начиная с указанного индекса |
ReadLine() | Читает строку символов из текущего потока и возвращает данные в виде строки (пустая строка указывает EOF – конец файла) |
ReadToEnd() | Читает все символы, начиная с текущей позиции и до конца потока, и возвращает их в виде одной строки |
Если теперь расширить имеющийся класс MyStreamWriter.Reader, чтобы использовать в нем StreamReader, вы сможете прочитать текстовые данные из файла reminders.txt, как показано ниже.
static void Main(string[] args) {
Console.WriteLine("*** Забавы с StreamWriter/StreamReader ***\n");
…
// Теперь чтение данных из файла.
Console.WriteLine("Вот ваши идеи:\n");
StreamReader sr = File.OpenText("reminders.txt");
string input = null;
while ((input = sr.ReadLine()) != null) {
Console.WriteLine(input);
}
}
Выполнив программу, вы увидите символьные данные из reminders.txt, выведенные на консоль.
Непосредственное создание типов StreamWriter/StreamReader
Одной из смущающих особенностей работы с типами из System.IO является то, что часто одних и тех же результатов можно достичь в рамках множества подходов. Например, вы видели, что можно получить StreamWriter из File или из FileInfo, используя метод CreateText(). На самом деле есть еще одна возможность получения StreamWriters и StreamReaders – это непосредственное их создание. Например, наше приложение можно было бы переписать в следующем виде.