Консольный ввод-вывод данных
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.
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.