2013-05-03 58 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,但如果你想改變你的代碼,其他答案也是有用的。

相關問題