Консольный ввод-вывод данных

  • docx
  • 18.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л2-002143.docx

Консольный ввод-вывод данных

C#-программы в пространстве имен System могут использовать:

       стандартный входной поток Console.In, в который вводится ин- формация с клавиатуры;

       стандартный выходной поток Console.Out, в который выводится информация, направляемая в консоль (на экран);

       стандартный выходной поток Console.Error сообщений об ошиб- ках, в который выводится информация, направляемая в консоль (на экран).

 

Console.In, Console.Out и Console.Error – это свойства класса Console, значением которых являются соответствующие символьные потоки (объ- екты).

 

Примеры ввода-вывода:

 

Console.ReadLine(…) и Console.WriteLine(…).

 

Console.Out и Console.Error — объекты типа TextWriter. Поток Con- sole.In - объект типа TextReader.

 

Для доступа к этим потокам можно использовать методы и свойства, определенные в классах TextWriter и TextReader соответственно. Однако это целесообразно делать только для потока Console.Error:

 

public static void Main()

{

int a, b=7, c=0;

 


try

{

 

}


 

a = b / c;                 // Деление на нуль: генерируем исключение.


 

catch (DivideByZeroException exc)

{

Console.Error.WriteLine (exc.Message);

}

}

 

У стандартных потоков можно, не переделывая программу, менять ис- точник и приемник информации (т.е. перенаправлять поток).

 

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

1)  средствами Windows (внешними);

2)     из программы (внутренними средствами) с помощью методов

SetIn(), SetOut() и SetError(), которые являются членами класса Console.


Способ 1. Средствами Windows все стандартные потоки, кроме потока ошибок, могут быть перенаправлены при запуске программы (то есть временно) на любое совместимое устройство ввода-вывода.

 

Для этого при запуске программы из командной строки можно ис- пользовать оператор "<", чтобы перенаправить поток Console.In и опе- раторы ">" и ">>" для перенаправления потока Console.Out.

 

Примеры.

example.exe >      NewFile.txt example.exe >> OldFile.txt example.exe <      OldFile.txt

example.exe >      NewFile.txt < OldFile.txt

 

Способ  2.  Перенаправление  осуществляется  с  помощью   методов

SetIn(), SetOut() и SetError(), которые являются членами класса Console:

 

Формат:

static void SetIn (TextReader input) static void SetOut (TextWriter output) static void SetError (TextWriter output)

 

Такое перенаправление имеет постоянное действие и его нельзя от- менить или повторно перенаправить при запуске программы.

 

Пример.

 

using System; using System.IO;

 

class Redirect

{

public static void Main()

{

StreamWriter log_out = new StreamWriter("C:\\logfile.txt");

 

// Направляем стандартный выходной поток в системный журнал. Console.SetOut(log_out);

 

Console.WriteLine ("Это начало системного журнала."); for (int i = 0; i < 10; i++)  Console.WriteLine(i);

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

}

}

 

Можно указывать любой поток, если он является производным от класса TextReader или TextWriter.