2013-05-03 60 views
0

我读取了一个文件big.txt来填充我的HashMap。我已将文件放在bin文件夹中的class文件旁边。FileNotFoundException即使文件放置在与类文件相同的文件夹中

但是,每当我想使用它时,它会给出一个错误,说java.io.FileNotFoundException (No such file or directory)

这是怎么发生的?

public ClassName() throws IOException{ 
     URL url = ClassName.class.getResource("big.txt"); 
     File file = new File(url.getPath()); 
     BufferedReader inp= new BufferedReader(new FileReader(file)); 
     // some code 
     } 
     inp.close();   
    } 

为什么会发生这种情况? Plaese帮助我在这里!

+0

你已经有了URL,只需调用'openStream()',它将返回一个'InputStream'。通过'InputStreamReader'使用它 – 2013-05-03 18:53:49

+0

把它放在你的工作目录,即你从哪里启动程序。 – Kevin 2013-05-03 18:54:26

+1

打印URL的路径,看看你真的在做什么。我不会将URL与文件混合在一起,而是会坚持一个或另一个。 – 2013-05-03 18:54:46

回答

3

您可以访问您有任何资源在类路径

public ClassName() throws IOException{ 
     // the path to your file is relative to the package of ClassName 
     InputStream input = ClassName.class.getResourceAsStream("big.txt"); 

     BufferedReader inp = new BufferedReader(new InputStreamReader(input)); 

     // some code 

     inp.close();   
} 

URL url = ClassName.class.getResource("big.txt"); 
// check for null first 
InputStream input = url.openStream(); 
BufferedReader inp = new BufferedReader(new InputStreamReader(input)); 
0
public ClassName() throws IOException{ 
     Scanner in = new Scanner(getClass().getResourceAsStream("big.txt")); 
     //your stuff  
} 
+0

你应该稍微解释你的代码,例如什么是扫描仪等 – MarioDS 2013-05-03 19:01:07

1

如果您正在使用Eclipse,我相信,它实际上看起来在项目文件夹,但不在文件的bin文件夹内,具体取决于设置。你应该尝试在那里移动big.txt,但如果你想改变你的代码,其他答案也是有用的。

相关问题