Java控制台输入读取 | AI生成和翻译

Home 2025.03

要在 Java 中使用 org.jline.reader 包(JLine 库的一部分,用于处理具有行编辑、历史记录和补全等高级功能的控制台输入),请按照以下步骤操作。本指南提供完整且实用的方法帮助您快速上手。

前置条件

确保已将 JLine 库添加到项目中。如果使用 Maven,请在 pom.xml 中包含以下依赖项:

<dependency>
    <groupId>org.jline</groupId>
    <artifactId>jline</artifactId>
    <version>3.21.0</version> <!-- 使用最新版本 -->
</dependency>

使用 org.jline.reader 的基本步骤

  1. 创建 Terminal 实例
    • 使用 org.jline.terminal 中的 TerminalBuilder 类创建 Terminal 对象。该对象代表将读取输入的控制台环境。
    • 示例:
      import org.jline.terminal.Terminal;
      import org.jline.terminal.TerminalBuilder;
      
      Terminal terminal = TerminalBuilder.builder().build();
      
    • build() 方法创建适用于大多数环境的默认终端。您可以进一步自定义(例如设置终端类型),但默认设置通常已足够。
  2. 创建 LineReader 实例
    • 使用 org.jline.reader 中的 LineReaderBuilder 类创建 LineReader 对象,并将 Terminal 实例传递给它。
    • LineReader 是使用 JLine 功能读取用户输入的主要接口。
    • 示例:
      import org.jline.reader.LineReader;
      import org.jline.reader.LineReaderBuilder;
      
      LineReader reader = LineReaderBuilder.builder()
          .terminal(terminal)
          .build();
      
  3. 读取用户输入
    • 使用 LineReaderreadLine() 方法读取用户输入的一行文本。可以选择指定要显示的提示符。
    • 示例:
      String line = reader.readLine("> ");
      
    • 这会显示 > 作为提示符,等待用户输入,并在用户按下 Enter 键时返回输入的字符串。

简单示例

以下是一个完整的极简示例,循环读取用户输入,直到用户输入 “exit”:

import org.jline.reader.LineReader;
import org.jline.reader.LineReaderBuilder;
import org.jline.terminal.Terminal;
import org.jline.terminal.TerminalBuilder;

public class ConsoleExample {
    public static void main(String[] args) throws Exception {
        // 创建 Terminal
        Terminal terminal = TerminalBuilder.builder().build();
        
        // 创建 LineReader
        LineReader reader = LineReaderBuilder.builder()
            .terminal(terminal)
            .build();
        
        // 循环读取输入
        String line;
        while ((line = reader.readLine("> ")) != null) {
            System.out.println("您输入的是: " + line);
            if (line.equals("exit")) {
                break;
            }
        }
    }
}

可选功能

您可以通过附加功能增强 LineReader

1. 启用命令历史记录

2. 添加自动补全

3. 读取密码(掩码输入)

资源管理

为了确保应用程序的健壮性,请在完成后关闭 Terminal 以释放资源。由于 Terminal 实现了 Closeable,可以使用 try-with-resources 块:

try (Terminal terminal = TerminalBuilder.builder().build()) {
    LineReader reader = LineReaderBuilder.builder()
        .terminal(terminal)
        .build();
    String line = reader.readLine("> ");
    System.out.println("您输入的是: " + line);
}

为什么使用 org.jline.reader

与使用 System.inBufferedReader 的基本输入相比,org.jline.reader 提供:

注意事项

这涵盖了在 Java 中有效使用 org.jline.reader 读取控制台输入的基本要点。从基本设置开始,并根据应用程序的需要添加历史记录或补全等功能!


Back Donate