Java - 相对文件夹创建与非编译代码和可执行文件有何不同

标签 java

我正在制作一个 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/

相关文章:

java - 如何更新 Google App Engine 中的实体

Java BufferedWriter,OutputStreamWriter 能够写入关闭的 FileOutputStream

java - 按下按钮时 GUI 不会打开 (Java)

java - 如何使用 Retrofit 解析嵌套/多个 Json 对象

java - 带有 JPA 的 ObjectDB

java - Kotlin String toDouble() 函数不解析某些值?

java - 使用jmeter执行简单的java文件

java - 如何在 Maven 中为我的依赖项之一指定特定依赖项版本

java - 有没有办法将 setOnClickListener 与 Android Spinner 一起使用?

Java数组列表大小问题