java.io.FileNotFoundException。试图传入args [0]

时间:2016-02-07 00:20:57

标签: java

我一直在尝试将我的C ++代码转换为Java,特别是在文件输入方面遇到困难。

String inputfilename = args[0];
    Scanner infile = new Scanner (new FileInputStream(inputfilename));

这一直给我一个java.io.FileNotFoundException错误。我试图在“StackData.txt”中传递的文件正确放入命令行参数中。我已将它放在根目录和项目\ src \文件夹中,并且都不适合我。我试图命名输入文件名字符串,并且喜欢 -

String inputfilename = "StackData.txt";
Scanner infile = new Scanner (new FileInputStream(inputfilename));

这似乎也不起作用。也没有尝试将目录路径抛出到字符串名称中。我在某个地方犯了一个非常少年的错误吗?

我尝试过使用

File infile = new File(args[0]);

但是如果我尝试为while循环使用方法

while (infile.hasNextInt()){ blah blah
 }

它说该方法无法解析,我认为这意味着使用hasNextInt()方法我必须用FileInputStream启动文件。

2 个答案:

答案 0 :(得分:1)

每个java jvm都有一个工作路径。通常它与jvm的起始位置相同。但你总能改变这一点。

您的IDE具有默认工作路径集。根据您的IDE,可以在启动选项中更改。

要查找当前的工作路径,您只需打印当前目录的绝对路径:

public static void main(String[] args) {
    System.out.println(new File(".").getAbsolutePath());
}

如果使用相对路径,则应将文件放在此文件夹中。

如何使用绝对路径不应抛出任何FNF异常。

要使用扫描仪,您可以使用此示例:

    try {
        Scanner s = new Scanner(new FileInputStream("text.xml"));

        while (s.hasNextInt()){ 
         // bla bla
        }
    } catch (FileNotFoundException e) {
        // Please handle this exception ;)
        e.printStackTrace();
    }

请注意,您尝试在没有此类方法的hasNextInt()对象上调用File。您必须在Scanner对象上调用它。

答案 1 :(得分:1)

文件中的简单代码相应地使用

BufferedReader br = null;

    try {

        String sCurrentLine;

        br = new BufferedReader(new FileReader("C:\\testing.txt"));

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