Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
файлы лекция (основная).pdf
Скачиваний:
31
Добавлен:
15.04.2015
Размер:
938.85 Кб
Скачать

2.3 Перечисления

При работе с потоками, файлами и каталогами вам также потребуются перечисления FileAccess, FileMode, FileShare и SeekOrigin. Они содержат определения констант, нужных для определения режимов создания и открытия файлов, режимов совместного доступа к файлу, а также позиции при произвольном доступе к файлам.

Все эти константы мы будем рассматривать дальше по мере изложения материала этой главы.

3 Работа со стандартными потоками

Приложению С# доступны 3 стандартных потока, которые всегда открыты; стандартный поток ввода, стандартный поток вывода и стандартный поток вывода сообщений об ошибках.

Все перечисленные выше потоки определены в классе Console. Вы можете получить на них ссылки с помощью статических свойств In, Out и Error.

3.1 Стандартный поток ввода

Стандартный поток ввода, который можно получить при помощи статического свойства In, определен как статический объект класса TextReader. Этот класс содержит методы, предназначенные для ввода отдельных символов, строк и блоков текста. Вот как программа может получить ссылку на стандартный поток ввода:

TextReader trln = Console.In;

Чтобы ввести данные из стандартного потока ввода (по умолчанию связанного с клавиатурой компьютера), используйте один из методов, определенных для этого в классе TextReader.

В предыдущих примерах программ мы использовали метод Console. ReadLine, осуществляющий ввод символов из стандартного потока ввода. Аналогичный метод предусмотрен и в классе TextReader:

string s = trln,ReadLine();

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

Метод Read, не имеющий параметров, читает один символ и возвращает его как значение типа int. Если символов больше нет, метод возвращает значение -1. При возникновении ошибок создается исключение lOException, обработку которого необходимо предусмотреть.

3.2 Стандартный поток вывода

Стандартный поток вывода Out создан на базе класса TextWriter, предназначенного для форматированного вывода данных различного типа с целью их визуального отображения в виде текстовой строки.

Для того чтобы получить ссылку на стандартный поток вывода, используйте свойство Console.Out:

TextWriter twOut = Console.Out;

Далее, используя полученную ссылку, можно выводить данные с помощью одного из методов, определенных в классе TextWriter, например с помощью хорошо известного вам по предыдущим примерам программ метода WriteLine:

twOut.WriteLine("Запись в стандартный поток вывода"); Этот метод аналогичен методу Console .WriteLine.

В классе TextWriter определено несколько реализаций метода Write с параметрами различных типов. Вот некоторые из них:

public virtual void Write(bool); public virtual void Write(char); public virtual void Write(char[]); public virtual void Write(decimal); public virtual void Write(double); public virtual void Write(int); public virtual void Write(long); public virtual void Write(object); public virtual void Write(float); public virtual void Write(string); public virtual void Write(uint); public virtual void Write(ulong);

Как видите, вы можете записать в стандартный поток вывода текстовое представление данных различного типа, в том числе и класса obj ect.

Метод WriteLine аналогичен методу Write, отличаясь лишь тем, что он добавляет к записываемой в поток строке символ перехода на следующую строку:

public virtual void WriteLine(bool); public virtual void WriteLine(char); public virtual void WriteLine(char[]); public virtual void WriteLine(decimal); public virtual void WriteLine(double); public virtual void WriteLine(int); public virtual void WriteLine(long); public virtual void WriteLine(object); public virtual void WriteLine(float); public virtual void WriteLine(string); public virtual void WriteLine(uint); public virtual void WriteLine(ulong);

Реализация метода WriteLine без параметров записывает только символ перехода на следующую строку.

3.2.1 Стандартный поток вывода сообщений об ошибках

Стандартный поток вывода сообщений об ошибках Error, так же как и стандартный поток вывода Out, создан на базе класса TextWriter. Поэтому для записи сообщений об ошибках вы можете использовать только что описанные методы Write и WriteLine.

Вот как программа может получить ссылку на стандартный поток вывода сообщений об ошибках:

TextWriter twErr = Console.Error;

По умолчанию сообщения об ошибках выводятся на то же самое устройство вывода