我必须在我的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);
我错过了什么?
答案 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");
如果您无法确定文件的位置,可以使用各种技术让用户定义文件的位置。设置路径变量,配置文件或简单地接受用户输入。