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

Java中数据库文件的相对路径,java,Java,我必须在我的Java项目中访问一个数据库文件,但我无法获得正确的路径 完整路径是C:\Hogwarts\db\hogdb.fdb 我尝试使用此代码行查找当前相对路径: Path currentRelativePath = Paths.get(""); String s = currentRelativePath.toAbsolutePath().toString(); System.out.println("Current relative path is: " + s); 它说当前的相对路

我必须在我的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);

我错过了什么?

我想应该是

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

我认为应该是这样

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

@Firebird数据库的参数路径,例如C:/DB.FDB或Mac/User/DB.FDB

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

minDataBas=newinfdb(“C:\\Hogwarts\\db\\HOGDB.FDB”)

或者,如果您知道数据库文件在其启动的任何位置都将类似地相对于当前工作目录,那么您可以使用以前找到的工作目录路径,并将剩余的位置作为附加位置

Path currentRelativePath = Paths.get("");
String s = currentRelativePath.toAbsolutePath().toString();
minDataBas = new InfDB(s + "\\db\\HOGDB.FDB");
如果您不能确定文件的位置,可以使用多种技术让用户定义文件的位置。设置路径变量、配置文件或仅获取用户输入。

从文件:

@Firebird数据库的参数路径,例如C:/DB.FDB或Mac/User/DB.FDB

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

minDataBas=newinfdb(“C:\\Hogwarts\\db\\HOGDB.FDB”)

或者,如果您知道数据库文件在其启动的任何位置都将类似地相对于当前工作目录,那么您可以使用以前找到的工作目录路径,并将剩余的位置作为附加位置

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

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

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

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

事实上,所有元素都存在;只需使用绝对路径

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

也许我应该补充一点,当我将程序发送给其他人时,它必须工作,这就是为什么我不想使用C:\Hogwarts\db\hogdb.fdb路径的原因。我把它放在我的答案中(这有点不清楚)。您只需将“db\\HOGDB.FDB”附加到当前工作目录。只有当数据库文件与每台计算机上的CWD类似时,这才有效。也许我应该补充一点,当我将程序发送给其他人时,该程序必须工作,这就是为什么我不想使用C:\Hogwarts\db\hogdb.fdb路径。我在回答中提到了这一点(这有点不清楚)。您只需将“db\\HOGDB.FDB”附加到当前工作目录。只有当数据库文件与每台计算机上的CWD类似时,这才有效。