[英]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.