2015-12-13 102 views
0

我正在製作一個程序,需要保存對象以供將來檢索。該程序將作爲jar文件發送給不同的人。存儲實例序列化

當給對象輸入/輸出流一個絕對路徑(String)作爲參數時,我可以存儲和檢索類的實例。 我也可以將圖像和文本文件保存在資源文件夾中,並將其作爲資源與getClass().getResource(String path)

這裏是問題: 我已經儘可能的保存/從資源文件夾中獲取對象。它真的很奇怪的處理URLS和文件,而不是普通的字符串。有人可以幫幫我嗎?我需要能夠保存和檢索相對於類路徑的對象,以便當程序是保存在計算機上不同路徑中的jar文件時,我可以訪問這些對象。

+0

請考慮僅由只讀jar文件構成的類路徑。由用戶讀取和保存的文件不應該由類加載器加載爲資源。它們應該使用文件IO作爲文件加載。 Class.getResource()對於嵌入在應用程序中的只讀資源(你的應用程序圖標,啓動畫面等)很有用 –

回答

0

1:資源文件夾(在jar中)是隻讀的。

您可以創建數據,當您打包時存儲在jar文件中,但在完成後:僅對讀取

2:所以你想用戶可以讀寫(並且它不嵌入你的應用程序)。

  • 如果是個人DATAS,可以使用(PC):

    String appdata= System.getenv("APPDATA"); 
    
    System.out.println(appdata); 
    
    
    String dataFolder = System.getProperty("user.home") + "\\Local Settings\\ApplicationData"; 
    
    System.out.println(dataFolder); 
    
    
    String dataFolder2 = System.getenv("LOCALAPPDATA"); 
    

    的System.out.println(dataFolder2);

我的電腦上,它提供了:

C:\Users\develop2\AppData\Roaming 

C:\Users\develop2\Local Settings\ApplicationData 

C:\Users\develop2\AppData\Local 

看到這一點:What is the cross-platform way of obtaining the path to the local application data directory?

  • 這是對每個人都是,相同的原則,但你可能會遇到的安全問題

是這樣的:

String programdata = System.getenv("PROGRAMDATA"); 
System.out.println(programdata); 
String allusersprofile = System.getenv("ALLUSERSPROFILE"); 
System.out.println(allusersprofile); // same thing ! 
String publicdir = System.getenv("PUBLIC"); 
System.out.println(publicdir); 
+0

好的非常感謝你,我只是使用絕對字符串將我的對象保存到應用程序的數據文件夾中路徑 –