gpt4 book ai didi

java - 包含带有 Jar 文件的属性文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:15:50 28 4
gpt4 key购买 nike

我写了一个小应用程序。我已将数据库特定信息放在属性文件中。

db.url=jdbc:mysql://localhost:3306/librarydb
db.user=root
db.passwd=pas$w0rd

当我构建应用程序以获取可执行 jar 文件时,属性文件包含在其中。将这些信息放在属性文件中的全部目的是允许用户更改这些信息,但这使它变得不可能。

如何包含一个没有 jar 文件的属性文件?有点像您在 .NET 应用程序中使用 AppSettings 文件。

我是 Java 的新手,所以如果您能将其分解为一组步骤,我将不胜感激。

谢谢。

编辑:

这就是我从程序中的属性文件中获取值的方式。

public class DatabaseHandler {

public static Connection connectToDb() {
Connection con = null;
Properties props = new Properties();
InputStream in = null;

try {
in = DatabaseHandler.class.getResourceAsStream("database.properties");
props.load(in);
in.close();

String url = props.getProperty("db.url");
String user = props.getProperty("db.user");
String password = props.getProperty("db.passwd");

con = DriverManager.getConnection(url, user, password);
} catch (Exception ex) {
Logger.getLogger(DatabaseHandler.class.getName()).log(Level.SEVERE, null, ex);
}
return con;
}

}

最佳答案

你是对的。如果属性打算由用户修改,那么将它们放在 JAR 中的属性文件中是行不通的

有几种方法:

  • 您可以将属性放入存储在文件系统中的属性文件中。问题是找出文件系统中的何处来存储它们:

    • 在 UNIX/Linux 上,有关于在何处存储系统范围和每个用户配置属性的约定,但这些约定有点松散,并且处于不断变化的状态(例如,某些“桌面”框架有自己的偏好机制。

    • 我相信 Windows 也有类似的约定。

    • 方法的问题可能是权限问题(您不希望一个用户更改另一个用户的首选项),甚至可能是只读文件系统等问题。

    • 如果您打算在文件系统中使用属性文件,那么将位置硬连接到您的代码中并不是一个好主意。使其可通过命令行参数和/或可使用 -D 选项设置的“系统属性”进行配置。

  • 在 Windows 上,您可以将属性放入 Windows 注册表中。但是您需要使用第 3 方库来执行此操作。当然,这不是可移植的 - 它不能在非 Windows 平台上运行。

  • 您可以使用 Java Preferences API .它可以跨多个平台移植,但它是一个以 Java 为中心的解决方案;也就是说,它不太适合平台的“正常方式”做事。

总之,没有从所有角度来看都是理想的解决方案。


但是一旦您决定了如何存储您的首选项,您就可以编写您的应用程序,以便它使用您的 JAR 文件中的属性文件来提供默认或初始设置。

关于java - 包含带有 Jar 文件的属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16632342/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com