Чтение онлайн

на главную - закладки

Жанры

C# 4.0 полное руководство - 2011

Шилдт Герберт

Шрифт:

Не следует, однако, забывать, что на уровне операционной системы файл представляет собой набор байтов. И применение класса StreamReader или StreamWriter никак не может этого изменить.

Класс StreamWriter является производным от класса Тех tW rite г, а класс StreamReader — производным от класса TextReader. Следовательно,

в классах
StreamReader и StreamWriter доступны методы и свойства, определенные в их базовых классах.

Применение класса StreamWriter

Для создания символьного потока вывода достаточно заключить объект класса Stream, например FileStream, в оболочку класса StreamWriter. В классе StreamWriter определено несколько конструкторов. Ниже приведен едва ли не самый распространенный среди них:

StreamWriter(Stream поток)

где поток обозначает имя открытого потока. Этот конструктор генерирует исключение ArgumentException, если поток не открыт для вывода, а также исключение ArgumentNullException, если поток оказывается пустым. После создания объекта класс StreamWriter выполняет автоматическое преобразование символов в байты.

Ниже приведен простой пример сервисной программы ввода с клавиатуры и вывода на диск набранных текстовых строк, сохраняемых в файле test. txt. Набираемый тест вводится до тех пор, пока в нем не встретится строка "стоп". Для символьного вывода в файл в этой программе используется объект класса FileStream, заключенный в оболочку класса StreamWriter.

// Простая сервисная программа ввода с клавиатуры и вывода на диск,

// демонстрирующая применение класса StreamWriter.

using System; using System.10;

class KtoD {

static void Main { string str;

FileStream fout;

// Открыть сначала поток файлового ввода-вывода, try {

fout = new FileStream("test.txt", FileMode.Create);

catch(IOException exc) {

Console.WriteLine("Ошибка открытия файла:\п" + exc.Message); return ;

}

// Заключить поток файлового ввода-вывода в оболочку класса StreamWriter. StreamWriter fstr_out = new StreamWriter(fout) ;

try {

Console.WriteLine("Введите

текст, а по окончании — 'стоп'."); do {

Console.Write (": "); str = Console.ReadLine;

if(str != "стоп") {

str = str + "\r\n"; // добавить новую строку fstr_out.Write(str);

}

} while(str != "стоп");

} catch(IOException exc) {

Console.WriteLine("Ошибка ввода-вывода:\n" + exc.Message);

} finally {

fstr_out.Close;

}

}

}

В некоторых случаях файл удобнее открывать средствами самого класса StreamWriter. Для этого служит один из следующих конструкторов:

StreamWriter(string путь)

StreamWriter(string путь, bool append)

где путь — это имя открываемого файла, включая полный путь к нему. Если во второй форме этого конструктора значение параметра append равно true, то выводимые данные присоединяются в конец существующего файла. В противном случае эти данные перезаписывают содержимое указанного файла. Но независимо от формы конструктора файл создается, если он не существует. При появлении ошибок ввода-вывода в обоих случаях генерируется исключение IOException. Кроме того, могут быть сгенерированы и другие исключения.

Ниже приведен вариант представленной ранее сервисной программы ввода с клавиатуры и вывода на диск, измененный таким образом, чтобы открывать выходной файл средствами самого класса StreamWriter.

// Открыть файл средствами класса StreamWriter.

using System; using System.10;

class KtoD {

static void Main { string str;

StreamWriter fstr_out = null; try {

// Открыть файл, заключенный в оболочку класса StreamWriter.

fstr_out = new StreamWriter("test.txt");

Console.WriteLine("Введите текст, а по окончании — 'стоп'."); do {

– Console.Write (": "); str = Console.ReadLine ;

if(str != "стоп") {

str = str + "\r\n"; // добавить новую строку fstr_out.Write(str);

}

} while(str != "стоп");

Поделиться:
Популярные книги

Город Богов 2

Парсиев Дмитрий
2. Профсоюз водителей грузовых драконов
Фантастика:
юмористическое фэнтези
городское фэнтези
попаданцы
5.00
рейтинг книги
Город Богов 2

Кодекс Крови. Книга Х

Борзых М.
10. РОС: Кодекс Крови
Фантастика:
фэнтези
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга Х

На границе империй. Том 8. Часть 2

INDIGO
13. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 8. Часть 2

Прорвемся, опера! Книга 2

Киров Никита
2. Опер
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прорвемся, опера! Книга 2

Лучший из худших-2

Дашко Дмитрий Николаевич
2. Лучший из худших
Фантастика:
фэнтези
5.00
рейтинг книги
Лучший из худших-2

Жена со скидкой, или Случайный брак

Ардова Алиса
Любовные романы:
любовно-фантастические романы
8.15
рейтинг книги
Жена со скидкой, или Случайный брак

Вор (Журналист-2)

Константинов Андрей Дмитриевич
4. Бандитский Петербург
Детективы:
боевики
8.06
рейтинг книги
Вор (Журналист-2)

Старая дева

Брэйн Даниэль
2. Ваш выход, маэстро!
Фантастика:
фэнтези
5.00
рейтинг книги
Старая дева

Газлайтер. Том 6

Володин Григорий
6. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 6

Черт из табакерки

Донцова Дарья
1. Виола Тараканова. В мире преступных страстей
Детективы:
иронические детективы
8.37
рейтинг книги
Черт из табакерки

Гарем на шагоходе. Том 3

Гремлинов Гриша
3. Волк и его волчицы
Фантастика:
юмористическая фантастика
попаданцы
4.00
рейтинг книги
Гарем на шагоходе. Том 3

Душелов. Том 4

Faded Emory
4. Внутренние демоны
Фантастика:
юмористическая фантастика
ранобэ
фэнтези
фантастика: прочее
хентай
эпическая фантастика
5.00
рейтинг книги
Душелов. Том 4

Идеальный мир для Лекаря 16

Сапфир Олег
16. Лекарь
Фантастика:
боевая фантастика
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 16

Небо в огне. Штурмовик из будущего

Политов Дмитрий Валерьевич
Военно-историческая фантастика
Фантастика:
боевая фантастика
7.42
рейтинг книги
Небо в огне. Штурмовик из будущего