Операторы < и >, выполняющие переадресацию из командной строки, не являются составной частью С#, а предоставляются операционной системой. Поэтому если в рабочей среде поддерживается переадресация ввода-вывода, как, например, в Windows, то стандартные потоки ввода и вывода можно переадресовать, не внося никаких изменений в программу. Тем не менее существует другой способ, позволяющий осуществлять переадресацию стандартных потоков под управлением самой программы. Для этого служат приведенные ниже методыSetln (),SetOut ()иSetError (), являющиеся членами классаConsole.

static void Setln(TextReaderновый_поток_ввода)static void SetOut(TextWriterновый_поток_вывода)

static void SetError(TextWriterновый_поток_сообщений_об_ошибках)

Таким образом, для переадресации ввода вызывается методSetln() с указанием требуемого потока. С этой целью может быть использован любой поток ввода, при условии, что он является производным от классаTextReader.А для переадресации вывода вызывается методSetOut() с указанием требуемого потока вывода, который должен быть также производным от классаTextReader.Так, для переадресации вывода в файл достаточно указать объект классаFileStream,заключенный в оболочку классаStreamWriter.Соответствующий пример программы приведен ниже.

// Переадресовать поток Console.Out.

using System; using System.10;

class Redirect {

static void Main() {

StreamWriter log_out = null;

try {

log_out = new StreamWriter("logfile.txt");

// Переадресовать стандартный вывод в файл logfile.txt.

Console.SetOut(log_out);

Console.WriteLine("Это начало файла журнала регистрации.");

for(int i=0; i<10; i++) Console.WriteLine(i);

Console.WriteLine("Это конец файла журнала регистрации.");

} catch(IOException exc) {

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

} finally {

if(log_out != null) log_out.Close();

}

}

}

При выполнении этой программы на экран ничего не выводится, но файлlogfile. txt будет содержать следующее.

Это начало файла журнала регистрации.

0

1

2

3

4

5

6

7

8

9

Это конец файла журнала регистрации.

Попробуйте сами поупражняться в переадресации других встроенных потоков.

Чтение и запись двоичных данных

Перейти на страницу:

Похожие книги