繁体   English   中英

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

[英]Relative path to database file in 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);

我想念什么?

实际上,所有元素都在那里。 只需使用绝对路径即可。

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);

我认为应该是

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

InfDB.java文件中:

@param path Firebird数据库的路径,例如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");

如果不能确定文件的位置,可以使用多种技术让用户定义文件的位置。 设置路径变量,配置文件或仅接受用户输入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM