Java中数据库文件的相对路径

时间:2018-01-05 12:29:26

标签: java

我必须在我的Java项目中访问一个数据库文件,但我无法正确使用该路径。

完整路径为C:\Hogwarts\db\hogdb.fdb

我尝试使用此代码行来查找当前的相对路径:

Path currentRelativePath = Paths.get("");
String s = currentRelativePath.toAbsolutePath().toString(); 
System.out.println("Current relative path is: " + s);

它表示当前的相对路径为:C:\Hogwarts

现在我的代码看起来像这样:

minDataBas = new InfDB("db\\HOGDB.FDB");
new HuvudFonster(minDataBas).setVisible(true);

我错过了什么?

3 个答案:

答案 0 :(得分:2)

事实上所有元素都在那里;只需使用绝对路径。

String cwd = System.getProperty("user.dir"); // Alternative
Path cwdPath = Paths.get(cwd);
Path dbPath = Paths.get(cwd, "db/hogdb.fdb");
String db = dbPath.toAbsolutePath().toString();
if (!Files.exists(dbPath)) {
    throw new IllegalStateException("Wrong path for database: " + db);
}
minDataBas = new InfDB(db);

答案 1 :(得分:0)

我认为它应该是

minDataBas = new InfDB("C:\\Hogwarts\\db\\HOGDB.FDB");

答案 2 :(得分:0)

来自InfDB.java文件:

  

@param path Firebird DB的路径,例如C:/DB.FDB或Mac /User/DB.FDB

提供绝对路径,而不是依赖于推断您使用相对路径的方法,应该解决问题。因此,使用:

minDataBas = new InfDB("C:\\Hogwarts\\db\\HOGDB.FDB");

或者如果您知道数据库文件与发布的任何位置的当前工作目录相似,您可以使用先前找到的工作目录路径并将其余位置附加到

Path currentRelativePath = Paths.get("");
String s = currentRelativePath.toAbsolutePath().toString();
minDataBas = new InfDB(s + "\\db\\HOGDB.FDB");

如果您无法确定文件的位置,可以使用各种技术让用户定义文件的位置。设置路径变量,配置文件或简单地接受用户输入。