2012-07-19 82 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) {} 
相关问题