【发布时间】:2019-04-23 14:58:19
【问题描述】:
我有一个连接到数据库的简单 Java 程序。连接在db.properties 文件中配置。我的程序运行良好。
当我想将它编译成可执行的 jar 文件时,我会将属性文件放在同一个文件夹中,以便用户可以轻松地编辑属性文件并根据自己的喜好更改连接设置。这里的小问题是我的dbpath,我必须指定确切的目录来读取属性文件。
我想知道我是否可以将其保存在同一个文件夹中并将路径设置为当前目录,这样无论用户将文件夹保存在何处,它都将始终能够读取 db 属性而无需对路径进行硬编码。
代码:
Properties props=new Properties();
String dbpath = "C:\\Users\\nickywan123\\Documents\\db.properties";
FileInputStream in = new FileInputStream(dbpath);
props.load(in);
in.close();
String driver = props.getProperty("jdbc.driver");
if(driver!=null){
Class.forName(driver);
}
String url=props.getProperty("jdbc.url");
String username=props.getProperty("jdbc.username");
String password=props.getProperty("jdbc.password");
Connection con = DriverManager.getConnection(url,username,password);
我尝试了不同的解决方案来获取 jar 文件的位置,例如 Get location of JAR file 但它不会返回我希望能够读取的位置。
感谢任何建议
【问题讨论】:
-
将文件放入
src/main/Resources文件夹并将其放入您的 jar - 查看我提供的链接 -
你应该为依赖文件使用相对路径。例如
/resources/db.properties。在这种情况下,资源文件夹应该与当前工作目录平行。 -
@ScaryWombat 所以我必须在包含 jar 文件的文件夹中包含该文件夹以及该文件,对吗?
-
如果您希望能够编辑文件,那么您需要将其存储在磁盘上(外部)。在这种情况下,最好将其存储在“众所周知”的位置。在可能类似于
System.getProperty("user.dir") + File.seperator + "AppData/{Appname}/{foldername}/{file}"的窗口上。这样做的原因是因为工作目录可能与安装 jar/文件的位置不同
标签: java