2010-04-21 90 views
3

我有一個保存大量數據的swing應用程序(例如,您可以考慮遊戲及其保存)。這些數據存儲在文件中而不是數據庫中。從Java代碼的執行位置獲取位置

我想將這些文件保存在我的應用程序的安裝文件(.jar文件)附近。有些用戶(如我)用於刪除操作系統的默認應用程序文件夾,當它變得很大時,我不希望它們以這種方式丟失數據。

任何想法如何輕鬆做到這一點?如何從正在執行.jar文件的程序的程序中獲取.jar文件的文件夾?或者我如何直接將文件輸出到某個包中?如何動態創建包(jar文件夾內)?還是有一種簡單的方法來分發其他格式的Java應用程序然後.jar,然後將生成的數據存儲在安裝(子)文件夾中?

感謝您閱讀

回答

6

我想繼續靠近我 application.Some用戶 安裝文件(.jar文件)(像我)這個文件 用於刪除默認應用程序 操作系統文件夾,當涉及到大 ,我不希望他們這樣鬆散他們的 數據。

這(與應用程序目錄的普通用戶帳戶沒有寫訪問的多用戶系統)的概念就是用戶數據應該被保存在用戶的主目錄的原因,並沒有在任何地方應用安裝附近夾。

+0

那麼,我該如何將數據保存到用戶的主目錄,或者任何在Java平臺默認的地方? – drasto 2010-04-22 09:46:33

+2

@drasto:System.getProperty(「user.home」)將返回目錄路徑。 – 2010-04-22 10:24:20

5

代碼

URL folderURL = ClassLoader.getSystemResource("."); 

到第一位置,搜索就像你當前正在執行的類文件資源將提供一個URL。

2

下面是一個例子:

package jartest; 

import java.io.File; 
import java.net.URL; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class Main { 
    private static final Pattern JARURL = Pattern.compile("jar:file:(.*)!.*"); 

    public static void main(String[] args) { 
     try { 
      URL url = Main.class.getResource("Main.class"); 
      Matcher matcher = JARURL.matcher(url.toString()); 
      if (matcher.matches()) { 
       File file = new File(matcher.group(1)); 
       File dir = file.getParentFile(); 
       System.out.println(dir); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 
0

讓您的jar文件的位置

首先創建一個文件夾(比如MyFolder文件),把你的文件裏面

考慮下面的函數

public String path() 
{ 
URL url1 = getClass().getResource(""); 
String ur=url1.toString(); 
ur=ur.substring(9); 
String truepath[]=ur.split("myjar.jar!"); 
truepath[0]=truepath[0]+"myfolder/"; 
truepath[0]=truepath[0].replaceAll("%20"," "); 
return truepath[0]; 
}//This method will work on Windows and Linux as well. 
//You can alternatively use the following line to get the path of your jar file 
//classname.class.getProtectionDomain().getCodeSource().getLocation().getPath(); 

假設你的用戶放D:\ Test \ dist中的jar文件

然後path()將返回/ D:/ Test/dist/myfolder/

現在,你可以把「MyFolder文件」在您的jar文件駐留

這樣,您就可以訪問內部MyFolder文件

步驟分配

下載Inno Setup的編譯器文件夾內從http://www.jrsoftware.org/isdl.php運行它

選擇'使用腳本嚮導創建新的腳本文件'選項 填寫您讀應用程序的詳細信息

下一頁瀏覽您的jar文件(選擇打開對話框中的所有文件選項來查看您的jar文件)

而且五言你「MyFolder文件」添加到其他應用程序文件部分(添加文件夾)

按照其餘指示

你是一個去。