Главная » C# » Канальная пересылка данных с помощью консоли в Visual C# (Sharp)

0

Так как для ввода данных консольные приложения в основном используют клавиуру, то они не отличаются хорошей интерактивностью. Главное достоинство коольных приложений состоит в их возможностях динамически объединять манипяции потоками данных в процессе, называющемся канальной пересылкой данных (piping).

Для примера предсказания номеров лотерейных билетов консольное приложение TextProcessor получает и поставляет данные посредством канала (рис. Ю.1). Даые поставляются из файла по каналу в консольное приложение, которое манипирует ими, после чего поставляет их выходящему каналу, который в свою очередь пересылает их другому консольному приложению.

Рис. 10.1. Применение каналов для обработки данных

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

Считывание данных с консоли

Данные с консоли можно считывать двумя способами:

•    предоставить приложению в виде аргумента путь к файлу, который необходимо прочитать;

•    переслать данные консольному приложению от другого приложения по каналу.

В  рассматриваемом  примере  будет  реализована  возможность  принимать  потоки данных, поставляемые обоими способами.

Считывание файла

Считывание из файла является самым простым программным способом получения данных. Для этого нужно только указать имя требуемого файла в параметре кандной строки. Например, чтобы просто загрузить файл lotto.txt в программу TextProcessor, применяется такая команда:

TextProcessor.exe lotto.txt

В этой команде приложению TextProcessor.exe передается один параметр команой  строки:  lotto.txt.  Для  разделения  нескольких  параметров  командной  строки применятся  простой пробел.  При работе с Windows это является  проблемой, т. к. в этой операционной системе пробел является легитимным символом идентификора пути. Например, следующий путь будет посчитан за два параметра: TextProcessor.exe c:\My Documents\user\lotto.txt

Пробел между му и Documents указывает консоли, что в команду поставляются два аргумента. Данная проблема решается заключением пути в кавычки: TextProcessor.exe "c:\My Documents\user\lotto.txt"

Кроме пути, в команде приложению может также поставляться другая информация:

TextProcessor.exe -count 10 lotto.txt

В данном случае для параметра -coun t требуется  предоставить значение,  которое в этом примере равно 10. Обычно опции командной строки указываются в формате пары "ключ/значение", т. к. опции перечисляются в произвольном порядке. Исклением является последний параметр, в котором указываются данные, подлежащие обработке.

ПРИМЕЧАНИЕ

Дополнительную  информацию  о  комбинациях опций  и  параметров  командной строки и возможностях консоли можно посмотреть в Интернете по следующему адресу http://en.wikipedia.org/wiki/Command_line_interface.

Пересылка данных по каналу

Другое решение состоит в использовании команды, которая считывает файл и песылает его содержимое по каналу в поток. Консольное приложение считывает поток и обрабатывает данные. Далее приводится пример команды для пересылки данных по каналу. Операция пересылки по каналу указывается символом канала (|) .

type lotto.txt | TextProcessor.exe

В примере команда type (которая обычно считывает содержимое файла и выводит его на экран) считывает содержимое файла и пересылает на консоль. Потом прожение TextProcessor.exe считывает данные с консоли, обрабатывает их и пересает обратно на консоль.

В табл. Ю.1  перечислены консольные команды, действующие в рамках приложе-

ни я  TextProcessor.

Таблица      10.1.      Команды      приложения        TextProcessor

Команда

Описание

TextProcessor.ехе

Считывает данные из канала консоли  и запывает обратно в канал консоли

TextProcessor.exe [ filename ]

Считывает данные  из указанного  в  параметре файла и записывает в канал консоли

TextProcessor.exe -out  [filename]

[filename]

В  первом  параметре указывается файл, в который записывать данные,  а во втором — файл,  из которого считывать

TextProcessor.exe -out  [filename]

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

TextProcessor.exe -help

Выводит на экран справку по использованию приложения  TextProcessor. Справка также выводится  в  случае  неправильно указанных параметров

Источник: Гросс  К. С# 2008:  Пер. с англ. — СПб.:  БХВ-Петербург, 2009. — 576 е.:  ил. — (Самоучитель)

По теме:

  • Комментарии