Java的新文件()说FileNotFoundException异常,但文件存在Java的新文件()

2019-05-08 20:36发布

我有我的CS类的任务分配时,它说,阅读与几个测试成绩文件,并要求我总和与平均值他们。 虽然求和平均是容易的,我对文件的阅读有问题。 指导员说,使用这种语法

Scanner scores=new Scanner(new File("scores.dat"));

然而,这将引发一个FileNotFoundException异常,但我检查了一遍又一遍,看是否该文件在当前文件夹中存在,在那之后,我想,它必须做的事情的权限。 我改变了权限,读取和写入每个人,但它仍然没有工作,但仍不断抛出的错误。 任何人都不会有为什么这可能发生的任何想法?

编辑:实际上,它是指向一个目录了,但是,我有固定的问题。 file.exists()返回true,但是,当我试图把它的扫描仪,它抛出FileNotFoundException异常

这里是我的代码

import java.util.Scanner;
import java.io.*;
public class readInt{
        public static void main(String args[]){
                File file=new File("lines.txt");
                System.out.println(file.exists());
                Scanner scan=new Scanner(file);
        }
}

Answer 1:

有三种情况下,一个FileNotFoundException可能抛出。

  1. 命名的文件不存在。
  2. 命名文件实际上是一个目录。
  3. 指定的文件不能读取由于某些原因被打开。

前两种情况都不太可能根据您的描述。 我将使用测试针对第三种情况file.canRead()

如果上述测试返回true,我会怀疑如下:

您可能忘记明确地抛出或捕捉潜在的异常(即FileNotFoundExcetion )。 如果您在IDE中工作,你应该已经得到来自编译器的一些投诉。 但我怀疑你没有在这样一个IDE运行代码。

我刚刚运行您的代码而不采取从NetBeans中投诉的护理,只得到下面的异常消息:

异常在线程“主”了java.lang.RuntimeException:不可编译的源代码 - 没有报告异常java.io.FileNotFoundException; 必须捕获或声明抛出

试试下面的代码,看看是否异常就会消失:

public static void main(String[] args) throws FileNotFoundException {    
    File file=new File("scores.dat");
    System.out.println(file.exists());
    Scanner scan=new Scanner(file);
}


Answer 2:

代码本身工作正常。 问题是,该程序工作路径指向其他地方比你想象的。

使用此行,看看那里的路径是:

System.out.println(new File(".").getAbsoluteFile());


Answer 3:

显然,有一些可能的原因和以前的答案记录得很好,但在这里就是我如何在一个特定的情况下,解决了这个为:

我的一个学生有这个问题,我几乎撕毁我的头发试图弄明白。 原来,该文件不存在,即使它看上去像它一样。 问题是,Windows 7的配置为“隐藏已知文件类型的文件扩展名。” 这意味着,如果文件似乎具有名称“的data.txt”它的实际文件名是“data.txt.txt”。

希望这可以帮助别人救自己一些头发。



Answer 4:

我最近发现,产生FileNotFoundExeption当文件显然是存在磁盘上有趣的案例。 在我的计划,我读了另一个文本文件文件的路径和文件创建对象:

//String path was read from file
System.out.println(path); //file with exactly same visible path exists on disk
File file = new File(path); 
System.out.println(file.exists());  //false
System.out.println(file.canRead());  //false
FileInputStream fis = new FileInputStream(file);  // FileNotFoundExeption 

故事的起因是路径包含无形\ r \ n个符号结尾。 固定:

File file = new File(path.trim()); 


Answer 5:

读出,并以文件中写入可以通过你的操作系统取决于文件的权限属性被阻止。

如果您正试图从文件中读取,那么我建议使用文件的setReadable方法将其设置为true,或者,如下面的代码:

String arbitrary_path = "C:/Users/Username/Blah.txt";
byte[] data_of_file;
File f = new File(arbitrary_path);
f.setReadable(true);
data_of_file = Files.readAllBytes(f);
f.setReadable(false); // do this if you want to prevent un-knowledgeable 
                      //programmers from accessing your file.

如果你试图写入文件,那么我建议使用文件的setWritable方法将其设置为true,或者,如下面的代码:

String arbitrary_path = "C:/Users/Username/Blah.txt";
byte[] data_of_file = { (byte) 0x00, (byte) 0xFF, (byte) 0xEE };
File f = new File(arbitrary_path);
f.setWritable(true);
Files.write(f, byte_array);
f.setWritable(false); // do this if you want to prevent un-knowledgeable 
                      //programmers from changing your file (for security.)


Answer 6:

一个简单的办法,这为我工作,正在我的文件了SRC,进入该项目的主文件夹。 这不是最好的解决办法,但根据项目的大小和你的时间,它可能是恰到好处。



Answer 7:

除了所有其他的答案这里提到的,你可以做的一件事情是为我工作。

如果您是直接从Windows资源管理器粘贴路径读取,而不是通过拷贝扫描仪或通过命令行参数的路径,只是手动键入路径。

它的工作对我来说,希望它可以帮助别人:)



文章来源: Java new File() says FileNotFoundException but file exists