2011-09-03 115 views
3

我在Netbeans中有一個Java應用程序項目。我只有一堂課。 我嘗試這樣做Netbeans中的FileNotFoundException

FileReader fr = new FileReader("sal.html"); 

我有同樣的包下的文件sal.html。但我運行時出現此錯誤:

Errorjava.io.FileNotFoundException: sal.html (The system cannot find the file specified) 
+0

當我從控制檯手動運行它運行良好! – John

回答

3

我的猜測是Netbeans正在從項目的根文件夾中調用JVM。引用File Javadoc的一部分:

默認情況下,java.io包中的類總是針對當前用戶目錄解析相對路徑名。該目錄由系統屬性user.dir命名,通常是調用Java虛擬機的目錄。

要驗證相對路徑解析您可以嘗試:

System.out.println(System.getProperty("user.dir")); 
System.out.println(new File("sal.html").getAbsolutePath()); 

然後,您可以將您的文件到哪裏Java是尋找它。很可能您的項目的根文件夾爲

您也可以考慮使用類加載器使用getClass().getResourceAsStream("sal.html");作爲資源內的資源讀取文件。這是訪問資源的首選方式,因爲您不必再​​擔心絕對路徑和相對路徑。如果某個資源位於您的類路徑中,則可以訪問它。有關更多信息,請參閱this answer

+0

多一個疑問!您說JVM調用的目錄存儲在user.dir系統屬性中。我運行了上面兩行代碼,並得到了相同的輸出。 'C:\ Users \ Onie \ Documents \ NetBeansProjects \ Testapp \ sal.html' 'C:\ Users \ Onie \ Documents \ NetBeansProjects \ Testapp'所以它應該是正確的?我也試過'新的FileReader(「C:\\ Users \\ Onie \\ Documents \\ NetBeansProjects \\ Testapp \\ sal.html」);'並且失敗! – John

+0

它失敗了什麼錯誤? –

+0

同樣的錯誤。 'Errorjava.io.FileNotFoundException:C:\ Users \ Onie \ Documents \ NetBeansProjects \ Testapp \ sal.html(系統找不到指定的文件)' – John

0

我認爲你的問題是在文件的相對路徑中。嘗試聲明FileReader文件的完整路徑。

0

FileNotFoundException表示找不到文件。

netbeans的build文件夾與沒有文件sal.html的地方不同。

嘗試使用絕對路徑代替使用相對路徑。

1

將您的文件放到主項目文件夾中。不是像src或bin等任何子文件夾,然後它會檢測到你的文件。

0

這不是「文件未找到」問題。 這是因爲每個班級組織自己的資源(讓它文件,圖像等),只能通過資源加載聲明這是如下訪問:

的InputStream在= this.getClass()。的getResourceAsStream( 「sal.html」);

唯一的解決方法是您將得到一個InputStream而不是一個文件。 希望這有助於。

1

在Netbeans中點擊文件視圖。將sal.html移至項目文件夾。這樣你會看到像這樣

- JavaProject 
    + build 
    + lib 
    + nbproject 
    + src 
    + build.xml 
    manifest.mf 
    sal.html 

現在

FileReader fr = new FileReader("sal.html"); 

會工作。

1
System.out.println(System.getProperty("user.dir")); 
System.out.println(new File("sal.html").getAbsolutePath()); 

然後它會顯示JVM從哪裏檢索文件。通常用於/home/username/NetbeansProjects/ApplicationName/中的linux。

把你的資源或文件到這個路徑