Dart Academy · 课时

标准输入、标准输出与进程参数

构建交互式 CLI 程序

第 4 / 4 课13 个步骤

标准输入、标准输出与进程参数 是 CoddyKit 上的免费 Dart Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 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 获取他们的 answer。程序会暂停,直到用户按下 Enter。

final name = stdin.readLineSync();

输入可能为 null

readLineSync 会返回一个可空的字符串。如果 stream 在没有输入的情况下关闭,您会得到 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 告诉 shell 程序的执行结果。零表示成功,其他任何值都会向调用您的脚本报告错误。

exit(1);

关闭回显模式

输入密码时,请在读取该行之前将 stdin.echoMode 设置为 false,以隐藏输入的字符。

stdin.echoMode = false;

快速检查

CLI 工具应将错误消息发送到哪里,才能让通过管道传出的输出保持整洁?

回顾

现在,您可以向 stdout 和 stderr 写入内容,使用 stdin 读取输入,接收命令行 args,并设置退出代码。您的 CLI 已经具备交互能力。

免费开始

用 AI 导师学习 Dart — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
30
课程
120

常见问题解答

「标准输入、标准输出与进程参数」课时是免费的吗?

是的 — 「标准输入、标准输出与进程参数」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Dart Academy 课程的其余内容,请升级到 CoddyKit PRO。 Dart Academy 课程共包含 4 节课。

「标准输入、标准输出与进程参数」这节课中我会学到什么?

构建交互式 CLI 程序 你通过在浏览器中直接运行的动手代码来练习 Dart Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Dart Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Dart Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「标准输入、标准输出与进程参数」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Dart Academy 课中编写并运行代码吗?

能。每节 Dart Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 读取与写入文件
  2. 目录、路径与 FileSystemEntity
  3. 流式处理大型文件
  4. 标准输入、标准输出与进程参数
← 返回 Dart Academy