Java 控制台(通常指的是标准输入 System.in
和标准输出 System.out
)是进行命令行交互的基本工具。对于基本的输入输出操作,Java 提供了 Scanner
类和 PrintStream
类等。但是,如果你想要实现更高级的功能,例如颜色输出、格式化输入或非阻塞输入等,则需要采取一些额外的步骤。
1. 格式化输出
使用 System.out.printf
方法可以像 C 语言中的 printf
那样格式化输出文本。
java
深色版本
1System.out.printf("Hello, %s! Today is %tF.\n", "World", new Date());
2. 使用 ANSI 转义码进行颜色输出
虽然 Java 本身没有直接支持颜色输出的 API,但可以通过 ANSI 转义码来实现。
java
深色版本
1System.out.println("\u001B[31mHello, World!\u001B[0m"); // 红色文字
3. 处理键盘输入
除了使用 Scanner
类外,还可以使用 BufferedReader
和 InputStreamReader
来处理更复杂的输入场景。
java
深色版本
1BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
2String input = reader.readLine(); // 读取一行输入
4. 非阻塞输入
在某些情况下,你可能希望程序能够继续运行而不需要等待用户输入。这可以通过使用 Console
类实现非阻塞输入。
java
深色版本
1Console console = System.console();
2if (console != null) {
3 char ch = console.readCharacter(); // 读取单个字符
4}
5. 使用第三方库
为了简化控制台的使用,可以考虑使用第三方库如 JLine 或 Apache Commons CLI。
- JLine:提供了一个更高级的控制台接口,支持历史记录、自动完成等功能。
- Apache Commons CLI:提供了一个命令行参数解析的框架。
示例:使用 JLine 进行简单的命令行交互
首先,你需要添加 JLine 的依赖项到你的项目中。如果你使用 Maven,可以在 pom.xml
文件中添加如下依赖:
xml
深色版本
1<dependency>
2 <groupId>org.jline</groupId>
3 <artifactId>jline-reader</artifactId>
4 <version>3.22.0</version>
5</dependency>
然后,你可以编写代码来使用 JLine:
java
深色版本
1import org.jline.reader.LineReader;
2import org.jline.reader.LineReaderBuilder;
3
4public class CommandLineApp {
5 public static void main(String[] args) throws Exception {
6 LineReader reader = LineReaderBuilder.builder().build();
7 String line;
8 while ((line = reader.readLine("> ")) != null) {
9 System.out.println("You entered: " + line);
10 }
11 }
12}
以上这些技术可以让你创建功能更强大的命令行应用。