1

我需要能够通过控制台上的输入来选择文件夹内的任何文件。

代码

而不是像"bridge_rgb.png"我希望能够通过控制台输入选择文件夹中的任何文件这样的预定义文件。

private void imageName() {
        System.out.println("Select your image");
        String input = scanner.next();
        if (input.equals("bridge_rgb.png")) {

        } else if (input.equals("gmit_rgb.png")) {
        
        }

        System.out.println("Image Selected");

    }

在我的函数中,我想做同样的事情,代码如下:

File file = new File("bridge_rgb.png");
BufferedImage source = ImageIO.read(file);

// processing: result gets created

File output = new File("bridge_grey.png");
ImageIO.write(result, "png", output);

我知道 GUI 会让文件选择变得容易,但我必须专门使用控制台。

4

1 回答 1

1

假设您已指定一个文件夹,或使用当前工作目录。

至少你需要两种成分:

  1. 列出文件夹中给定的所有文件作为选项的功能
  2. 允许呈现这些选项并让用户从中选择的用户界面(基于文本或图形)

列出当前目录中的文件

搜索[java] list files in directory并选择:

File[] files = directory.listFiles();

基于文本的 UI (TUI) 按数字选择选项

例如,如何使用 Java 中的 Scanner 类从控制台读取输入?

// output on console
System.out.println("Choose from following files:");
for (int i=0, i < files.length(), i++) {
  System.out.println(String.format("[%d] %s", i, file.getName()); 
}

// reading the number
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();

// testing if valid, within options index (0..n)
if (i < 0 || i >= files.length()) {
  System.out.println("Invalid input. Please enter a number from options.");
}
// file choosen
System.out.println("Your choice: " + file[i].getName());

// other UI operations, like display file, etc.

// IMPORTANT: always close the stream/scanner when finished
scanner.close();
于 2021-08-11T18:01:16.647 回答