java文件操作—在控制台输入中读取从用户处获得的文件名

xlpyo6sf  于 2021-06-30  发布在  Java
关注(0)|答案(3)|浏览(421)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

5年前关门了。
改进这个问题
我必须从控制台中的用户那里获得一个文件名,比如a.txt,然后打开文件并读取它(更具体地说,标记化它)。我该怎么做?我无法从读取器获取文件名并用filename.txt打开它。
下面是代码片段:

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

8fsztsew1#

如果你打算得到用户的输入使用

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

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

d6kp6zgx

d6kp6zgx2#

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逐行读取文件。

5ssjco0h

5ssjco0h3#

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

java Foo filename.txt

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

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

(作为旁白,我建议不要使用 FileReader -它总是使用平台默认编码。我建议用 FileInputStream 裹在 InputStreamReader ,或只是使用 Files.newBufferedReader 默认为utf-8,但有一个重载,允许您指定编码。)

相关问题