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 — локальная установка не требуется.
Все уроки этого курса
- Чтение и запись файлов
- Каталоги, пути и FileSystemEntity
- Потоковая обработка больших файлов
- Stdin, Stdout и аргументы процесса