0Pricing
Dart Academy · Урок

Stdin, Stdout и аргументы процесса

Создавайте интерактивные программы CLI

«Stdin, Stdout и аргументы процесса» — бесплатный урок Dart Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Dart Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Dart Academy содержит 4 уроков всего.

Три стандартных потока

Программы командной строки взаимодействуют через три канала: stdin для ввода, stdout для обычного вывода и stderr для ошибок.

stdout и print

print добавляет перевод строки и выводит данные в stdout. Для более точного управления напрямую используйте stdout.write — дополнительный перевод строки не появится.

stdout.write('Loading');

Ошибки направляются в stderr

Отправляйте предупреждения в stderr, а не в stdout. Так обычный вывод останется чистым, когда пользователи перенаправляют вывод Вашей программы.

stderr.writeln('Could not find file');

Чтение строки ввода

Задайте пользователю вопрос, а затем получите его ответ с помощью stdin.readLineSync. Выполнение приостанавливается, пока пользователь не нажмёт Enter.

final name = stdin.readLineSync();

Ввод может быть нулевым

readLineSync возвращает строку, допускающую значение nullable. Если поток закрывается без ввода, Вы получите null, поэтому обработайте этот случай.

final answer = stdin.readLineSync() ?? '';

Небольшой цикл запросов

Объедините запись и чтение, чтобы создать запрос пользователю. Выведите вопрос, прочитайте ответ, а затем обработайте его — всё это занимает несколько строк.

stdout.write('Name? '); final n = stdin.readLineSync();

Аргументы командной строки

Ваша функция main может принимать List строковых аргументов args. Всё, что пользователь вводит после имени программы, попадает туда по порядку.

void main(List<String> args) { print(args); }

Чтение одного аргумента

Получайте args по индексу, как из любого списка. Всегда сначала проверяйте args.isEmpty, чтобы отсутствие аргумента не привело к сбою.

if (args.isNotEmpty) print(args[0]);

Разбор флагов с помощью args

В настоящих программах CLI пакет args превращает флаги и параметры в аккуратный разобранный результат вместо ручной работы с индексами.

import 'package:args/args.dart';

Установка кода завершения

Сообщите оболочке, как завершилась работа, с помощью exit. Ноль означает успех, любое другое значение сообщает об ошибке сценариям, которые вызывают Вашу программу.

exit(1);

Режим отображения выключен

При вводе паролей скройте набираемые символы, установив stdin.echoMode в false перед чтением строки.

stdin.echoMode = false;

Быстрая проверка

Куда инструмент CLI должен отправлять сообщения об ошибках, чтобы перенаправляемый вывод оставался чистым?

Итоги

Теперь Вы умеете записывать данные в stdout и stderr, читать ввод из stdin, принимать аргументы командной строки и устанавливать код завершения. Ваш CLI стал интерактивным.

Часто задаваемые вопросы

Урок «Stdin, Stdout и аргументы процесса» бесплатный?

Да — полный текст урока «Stdin, Stdout и аргументы процесса» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Dart Academy, подпишись на CoddyKit PRO. Курс Dart Academy содержит 4 уроков всего.

Чему я научусь в уроке «Stdin, Stdout и аргументы процесса»?

Создавайте интерактивные программы CLI Ты практикуешь Dart Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Dart Academy?

Предыдущий опыт не требуется. Dart Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Stdin, Stdout и аргументы процесса»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Dart Academy?

Да. Каждый урок Dart Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Чтение и запись файлов
  2. Каталоги, пути и FileSystemEntity
  3. Потоковая обработка больших файлов
  4. Stdin, Stdout и аргументы процесса
← Назад к Dart Academy