2012-07-19 70 views
5

當我試圖打開一個文件,我得到這個錯誤:java.io.FileNotFoundException上的現有文件

java.io.FileNotFoundException: D:\Portable%20Programs\Android%20Development\workspace3\XXX-desktop\bin\World_X.fr (The system cannot find the path specified) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(Unknown Source) 
    at java.util.Scanner.<init>(Unknown Source) 

該文件存在於目錄,但我仍然得到這個錯誤。但是,當我複製Eclipse工作區Project src文件夾中的同一文件時,不會返回這樣的異常(儘管此方法還會在bin文件夾中創建World_X.fr文件)。

什麼我其實想做的是通過這個得到的.jar文件的絕對位置:

fileLocation = new String(Main.class.getProtectionDomain().getCodeSource().getLocation().getPath()); 

然後我追加「World_X.fr」到fileLocation字符串,但這個不工作。在這方面請幫助我。

+4

你真的有「20%」,在他們的路徑? – 2012-07-19 16:56:27

+0

@DanielDiPaolo耶不知何故!我在睡覺...... :) – Rafay 2012-07-19 17:06:51

回答

8

您需要將%20轉換爲空格。例如:

fileLocation = new String(
    Main.class.getProtectionDomain().getCodeSource().getLocation().getPath()) 
    .replaceAll("%20", " "); 
0

嘗試遺漏%20,並改用普通空格。此外,如果您使用反斜槓,則在代碼中使用反斜槓,確保先將它們轉義出來。

15

file: URL轉換成實際File的首選方式是這樣的:

File file = new File(url.toURI()); 

這需要的所有檢查和報價/轉義護理。

使用getPath()而不是將這些奇數位留給你。

6

下面是該解決方案,這隻會JDK1.5工作後,

try { f = new File("somePath".toURI().getPath()); } catch(Exception e) {} 
相關問題