2014-05-19 41 views
0

我试图获得Netbeans创建的临时目录的位置,当我单击“运行”来运行我的项目时,它会在dist目录内创建一个文件,例如run1017994493为什么不存在目录?

然后后立即它建立运行这段代码:

String fileloc = SQLite.class.getProtectionDomain().getCodeSource().getLocation().getPath(); 
String location = fileloc.substring(0, fileloc.lastIndexOf("/")); 
File f = new File(location); 
System.out.println(location); 
System.out.println(f.exists()); 

输出:

/C:/Users/rnaddy/Documents/NetBeansProjects/Phantom%20Browser/dist/run1017994493 
false 

为什么说,目录不存在?

我相信这是造成下列2条防线:

Class.forName("org.sqlite.JDBC"); 
conn = DriverManager.getConnection("jdbc:sqlite:" + location + "/phantom.db"); 
+1

尝试用空格替换%20 – Kakarot

+0

天才!这是原因! –

回答

1

首先之前,您需要删除标题为“/”,那么所有的OCCURENCES“%20”或类似的东西应该有相应的字符来代替:

String loc = ... 
if (isWindows()) { 
    //remove heading slash 
    loc = loc.replaceAll("^/", ""); 
} 
loc = URLDecoder.decode (loc, "UTF-8"); // this will replace all characters like "%20" with something like " " 
-1

我想创建之后,你应该关闭文件。

f.close(); 

只是输出线

+1

我很确定File没有close方法 – MadProgrammer

相关问题