Java 文件操作- 读取我们在控制台输入中从用户那里获得名称的文件

Java File Operation- Reading a file whose name we get from the user in console input

我必须从控制台中的用户那里获取文件名,比如 A.txt,然后打开文件并读取它(更具体地说,将其标记化)。我该怎么做?我无法从 reader 获取文件名并用 filename.txt 打开它。

这是代码片段:

    String file = args[0];
    BufferedReader reader = new BufferedReader(new FileReader(file));

args[0] 将引用第一个命令行参数,例如

java Foo filename.txt

如果你想在交互式控制台上使用它,即程序启动后,你应该使用System.in,例如

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String filename = reader.readLine();

(顺便说一句,我建议不要使用 FileReader - 它始终使用平台默认编码。我建议使用包含在 InputStreamReader 中的 FileInputStream,或者只需使用默认为 UTF-8 但具有允许您指定编码的重载的 Files.newBufferedReader。)

如果您打算获取用户输入,请使用

Scanner sc = new Scanner(System.in);
String fileName = sc.nextLine();
System.out.println("file name"+fileName);

请尝试从控制台获取文件名。 如果要在BufferedReader中获取,请指定文件的完整路径。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class FileReadCommandLine {

        public static void main(String[] args) {

                BufferedReader br = null;

                try {

                        String sCurrentLine;

                        br = new BufferedReader(new FileReader(args[0]));

                        while ((sCurrentLine = br.readLine()) != null) {
                                System.out.println(sCurrentLine);
                        }

                } catch (IOException e) {
                        e.printStackTrace();
                } finally {
                        try {
                                if (br != null)
                                        br.close();
                        } catch (IOException ex) {
                                ex.printStackTrace();
                        }
                }

        }
}

所以这里你接受来自 args[0] 的命令行参数,这将是你的文件名 将在命令提示符中指定。假设您的文件和 java 程序在同一文件夹中 然后使用 bufferedReader 逐行读取文件。