2014-05-19 59 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

相關問題