Java 中运行之间的数据存储位置
Where to store data between runs in Java
我正在使用 ObjectOutputStream 和 ObjectInputStream 读取和写入需要存储在程序 运行 之间的数据。我的问题是是否有合适的地方来创建这些文件。目前我使用以下代码查找用户的文档文件夹。
String myDocuments = null;
try {
Process p = Runtime.getRuntime()
.exec("reg query \"HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\" /v personal");
p.waitFor();
InputStream in = p.getInputStream();
byte[] b = new byte[in.available()];
if (in.read(b) == 0) myDocuments = JOptionPane.showInputDialog(this,
"A fatal error has occurred. \n Please provide your documents folder.");
else {
myDocuments = new String(b);
myDocuments = myDocuments.split("\s\s+")[4];
}
in.close();
Log.logLine(myDocuments);
} catch (Throwable t) {
t.printStackTrace();
}
这可以作为一种做法吗?如果不行,我应该将这些信息存储在哪里?还有一种方法可以做到这一点,同时仍然允许应用程序 运行 不同的 OS 因为我知道当前方法仅适用于 Windows OS.
我想这取决于您的要求。每个 (?) OS 都应该使用的东西是使用应用程序自己的文件夹(或其子文件夹):
String dir = System.getProperty("user.dir");
我正在使用 ObjectOutputStream 和 ObjectInputStream 读取和写入需要存储在程序 运行 之间的数据。我的问题是是否有合适的地方来创建这些文件。目前我使用以下代码查找用户的文档文件夹。
String myDocuments = null;
try {
Process p = Runtime.getRuntime()
.exec("reg query \"HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\" /v personal");
p.waitFor();
InputStream in = p.getInputStream();
byte[] b = new byte[in.available()];
if (in.read(b) == 0) myDocuments = JOptionPane.showInputDialog(this,
"A fatal error has occurred. \n Please provide your documents folder.");
else {
myDocuments = new String(b);
myDocuments = myDocuments.split("\s\s+")[4];
}
in.close();
Log.logLine(myDocuments);
} catch (Throwable t) {
t.printStackTrace();
}
这可以作为一种做法吗?如果不行,我应该将这些信息存储在哪里?还有一种方法可以做到这一点,同时仍然允许应用程序 运行 不同的 OS 因为我知道当前方法仅适用于 Windows OS.
我想这取决于您的要求。每个 (?) OS 都应该使用的东西是使用应用程序自己的文件夹(或其子文件夹):
String dir = System.getProperty("user.dir");