我正在制作一个程序,需要保存对象以便将来检索。该程序将作为jar文件发送给不同的人。
在为Object输入/输出流提供绝对路径(String
)作为参数时,我已经可以存储和检索类的实例。
我还可以将图像和文本文件保存在资源文件夹中,并将其作为getClass().getResource(String path)
的资源。
问题在于: 我已经尝试过各种方法来保存/从资源文件夹中获取对象。处理URLS和文件而不是普通的字符串真的很奇怪。有人可以帮帮我吗?我需要能够保存和检索相对于类路径的对象,以便当程序是保存在计算机上不同路径中的jar文件时,我可以访问对象。
答案 0 :(得分:0)
1:资源文件夹(在jar中)是只读的。
您可以创建数据,在打包时存储在jar中,但之后,它已完成:仅读取。
2:所以你希望用户可以读写(并且它没有嵌入你的应用中)。
如果是个人数据,您可以使用(对于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);