![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Консольный ввод-вывод данных
C#-программы в пространстве имен System могут использовать: • стандартный входной поток Console.In, в который вводится информация с клавиатуры; • стандартный выходной поток Console.Out, в который выводится информация, направляемая в консоль (на экран); • стандартный выходной поток Console.Error сообщений об ошибках, в который выводится информация, направляемая в консоль (на экран).
Console.In, Console.Out и Console.Error – это свойства класса Console, значением которых являются соответствующие символьные потоки (объекты).
Примеры ввода-вывода:
Console.ReadLine(…) и Console.WriteLine(…).
Console.Out и Console.Error — объекты типа TextWriter. Поток Console.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.
|