我正在制作一个 Java 程序,我将把它包装成 .exe 用于测试和生产。程序初始化过程的一部分是在与可执行文件同一级别创建一个名为“config”的文件夹。举例说明:
---> Parent Folder
---> myProgram.exe
---> config/
这就是理想情况下应该发生的情况。
到目前为止,我正在测试这段代码:
String config_dir = "./config";
if(!new File(config_dir).exists()){
new File(config_dir).mkdirs();
return;
}
它的作用是检查目录是否存在,如果不存在则创建它。
但是,这段代码是由我的 Main.java
类运行的,当它上一级创建 config
目录时,它仍然处于同一级别与工作区目录内的其他文件夹一样:
---> MyProject
---> bin
---> external_lib
---> src
---> config
这是有道理的,因为我只让应用程序创建更高一级的文件夹。但打包为exe文件后,需要将该文件夹与exe文件放在同一级。我只是担心这样可能行不通。
有没有人有办法确保在与打包的可执行 Java 文件相同的级别上创建文件夹?我正在 Mac 上工作,可能需要一些时间才能对其进行测试。
最佳答案
从“运行 JAR”的角度来看,您可以使用
System.getProperty("user.dir")
返回 JVM 启动的路径。一旦你把它变成可执行文件,我不确定你到底需要什么。但你也可以尝试
getClass().getProtectionDomain().getCodeSource().getLocation()
关于Java - 相对文件夹创建与非编译代码和可执行文件有何不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43259078/