Консоль входного файла пользователя/Командная строка - Java

Большинство примеров в Интернете для ввода файла в Java относятся к фиксированному пути:

File file = new File("myfile.txt");

Как насчет входного файла пользователя с консоли? Скажем, я хочу, чтобы пользователь вводил файл:

System.out.println("Enter a file to read: ");

Какие параметры у меня есть (используя как можно меньше кода) для чтения в указанном пользователем файле для обработки. Как только у меня есть файл, я могу преобразовать его в строку и т.д. Я думаю, что это связано с BufferedReader, Scanner, FileInputStream, DataInputStream и т.д. Я просто не уверен, как использовать их в сочетании с получить наиболее эффективный метод.

Я новичок, поэтому я мог бы легко пропустить что-то простое. Но я уже давно напугался этим, но безрезультатно.

Спасибо заранее.

Ответ 1

Чтобы пользователь вводил имя файла, существует несколько возможностей:

Как аргумент командной строки.

public static void main(String[] args) {
  if (0 < args.length) {
    String filename = args[0];
    File file = new File(filename);
  }
}

Попросив пользователя ввести его:

Scanner scanner = new Scanner(System.in);
System.out.print("Enter a file name: ");
System.out.flush();
String filename = scanner.nextLine();
File file = new File(filename);

Ответ 2

Используйте java.io.BufferedReader

String readLine = "";
try {
      BufferedReader br = new BufferedReader(new FileReader( <the filename> ));
      while ((readLine = br.readLine()) != null) { 
        System.out.println(readLine);
      } // end while 
    } // end try
    catch (IOException e) {
      System.err.println("Error Happened: " + e);
    }

И заполните цикл while обработкой данных.

С уважением,  Stéphane