我在Netbeans中有一個Java應用程序項目。我只有一堂課。 我嘗試這樣做Netbeans中的FileNotFoundException
FileReader fr = new FileReader("sal.html");
我有同樣的包下的文件sal.html。但我運行時出現此錯誤:
Errorjava.io.FileNotFoundException: sal.html (The system cannot find the file specified)
我在Netbeans中有一個Java應用程序項目。我只有一堂課。 我嘗試這樣做Netbeans中的FileNotFoundException
FileReader fr = new FileReader("sal.html");
我有同樣的包下的文件sal.html。但我運行時出現此錯誤:
Errorjava.io.FileNotFoundException: sal.html (The system cannot find the file specified)
我的猜測是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。
多一個疑問!您說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
它失敗了什麼錯誤? –
同樣的錯誤。 'Errorjava.io.FileNotFoundException:C:\ Users \ Onie \ Documents \ NetBeansProjects \ Testapp \ sal.html(系統找不到指定的文件)' – John
我認爲你的問題是在文件的相對路徑中。嘗試聲明FileReader
文件的完整路徑。
FileNotFoundException
表示找不到文件。
netbeans的build文件夾與沒有文件sal.html的地方不同。
嘗試使用絕對路徑代替使用相對路徑。
將您的文件放到主項目文件夾中。不是像src或bin等任何子文件夾,然後它會檢測到你的文件。
這不是「文件未找到」問題。 這是因爲每個班級組織自己的資源(讓它文件,圖像等),只能通過資源加載聲明這是如下訪問:
的InputStream在= this.getClass()。的getResourceAsStream( 「sal.html」);
唯一的解決方法是您將得到一個InputStream而不是一個文件。 希望這有助於。
在Netbeans中點擊文件視圖。將sal.html移至項目文件夾。這樣你會看到像這樣
- JavaProject
+ build
+ lib
+ nbproject
+ src
+ build.xml
manifest.mf
sal.html
現在
FileReader fr = new FileReader("sal.html");
會工作。
System.out.println(System.getProperty("user.dir"));
System.out.println(new File("sal.html").getAbsolutePath());
然後它會顯示JVM從哪裏檢索文件。通常用於/home/username/NetbeansProjects/ApplicationName/
中的linux。
把你的資源或文件到這個路徑
當我從控制檯手動運行它運行良好! – John