保存来自Java应用程序的信息



我正在使用Java数据库(编译为JAR)制作应用程序。为了连接到数据库,用户必须输入数据库地址。每次要使用程序时都要记住/输入地址,这将是一件很痛苦的事情。

因此,我想将地址保存到某个文本文件中…但是在哪里?我希望这个应用程序对任何操作系统上的任何人都可以访问,并且我不希望将我的JAR放在文件夹中。

是否可能,也许,从位于JAR本身的文本文件中写入/读取?

就像Sotirios Delimanolis说的,你可以创建并保存一个属性文件。

这很简单,请看看下面的例子(见原文)

package test;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
public class WritePropertiesFile {
 public static void main(String[] args) {
  try {
   Properties properties = new Properties();
   properties.setProperty("favoriteAnimal", "marmot");
   properties.setProperty("favoriteContinent", "Antarctica");
   properties.setProperty("favoritePerson", "Nicole");
   File file = new File("test2.properties");
   FileOutputStream fileOut = new FileOutputStream(file);
   properties.store(fileOut, "Favorite Things");
   fileOut.close();
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}

我不建议您将属性文件保存到jar文件中,但是可以这样做。

请参阅stackoverflow的答案:如何在Java中写入文本文件

你可以使用classloader . getresourcesstream ()

我是这么做的。我只是使用路径System.getProperty("user.home")作为文件的位置。

尝试使用Java Preferences API像这样存储用户数据。

在应用程序文件夹中存储数据将会有问题(例如,用户可能没有权限,应用程序可能被签名,等等)。你可以将文件存储在用户的主目录中,但大多数操作系统都有一个指定的位置来存储用户数据(例如,Mac上的"Application Support",Windows上的AppData等)。另外,用户可能不喜欢你弄乱了他们的主目录。您可以创建一个属性文件,并自己处理将其存储在适当的位置,但更简单的解决方案是使用Preferences API,它抽象了必须知道在哪里写入文件的痛苦。

下面是一个例子:

import java.util.prefs.Preferences;
public class Test {
    public static final String DB_PROP = "user.selected.db.address";
    public static void main(String[] args) {
        Preferences prefs = Preferences.userNodeForPackage(Test.class);
        prefs.put(DB_PROP, "foo");
        String dbAddress = prefs.get(DB_PROP, null);
        System.out.println(dbAddress);
    }
}

最新更新