从Java应用程序保存信息

时间:2013-03-04 20:49:26

标签: java jdbc jar text-files

我正在使用Java中的数据库(编译为JAR)创建应用程序。为了连接到数据库,用户必须输入数据库的地址。每次想要使用该程序时记住/输入地址都会很痛苦。

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

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

4 个答案:

答案 0 :(得分:1)

与Sotirios相似,Delimanolis表示您可以创建并保存属性文件。

这样做很简单,请看下面的示例(请参阅original帖子)

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文件中,但是可以这样做。

请按照:how to write into a text file in Java

上的stackoverflow回答

答案 1 :(得分:0)

您可以使用例如在jar中的任何位置打开文件ClassLoader.getResourceAsStream()

答案 2 :(得分:0)

尝试Java Preferences API来存储这样的用户数据。

将数据存储在应用程序文件夹中会有问题(例如,用户可能没有权限,应用程序可能已签名等)。您可以将文件存储在用户主目录中,但大多数操作系统都有指定的位置来存储用户数据(例如,Mac上的“应用程序支持”,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);
    }
}

答案 3 :(得分:0)

这对我有用。我只是使用路径System.getProperty("user.home")作为我文件的位置。这是操作系统中立的。