如何获取WebContent / WEB-INF / classes目录的路径

时间:2018-12-21 02:55:15

标签: java file path

我有以下代码:

final String MY_DIR_PATH = "myDir/";
URL destDirUrl = getClass().getClassLoader().getResource(MY_DIR_PATH);
if (destDirUrl == null) {
    // what should go here?
}
Path destDirPath = Paths.get(destDirUrl.toURI());
if (Files.notExists(destDirPath)) {
    LOGGER.info("New directory \"" + destDirPath + "\" will be created.");
    Files.createDirectories(destDirPath);
}

如果存在myDir,则在调试第二行中的desDirUrl时包含:

file:/D:/myDevelopment/MyProject/WebContent/WEB-INF/classes/myDir/

但是,现在我必须对此进行增强,以处理以下情况:如果myDir不存在,则在myDir路径中创建file:/D:/myDevelopment/MyProject/WebContent/WEB-INF/classes/

我不知道在if中放入什么,以便下一行获得URL时得到相同的destDirPath

我尝试过,

URL classURL = getClass().getProtectionDomain().getCodeSource().getLocation();

但是这返回URL为:

file:/D:/myDevelopment/MyProject/java/bin/

这是不正确的。

我如何:

1)首先以file:/D:/myDevelopment/MyProject/WebContent/WEB-INF/classes的身份获取URL

2)然后如何向其中添加/myDir,以便下一行Path destDirPath = Paths.get(destDirUrl.toURI());像以前一样工作。

更新:

我也尝试过:

URL classURL = getClass().getClassLoader().getResource(".");

URL classURL = getClass().getClassLoader().getResource("/");

 URL classURL = getClass().getClassLoader().getResource("");

但没有一个起作用。

1 个答案:

答案 0 :(得分:0)

我会尝试这样的事情:

    URL url = getClass().getProtectionDomain().getCodeSource().getLocation();
    try {
        URI uri = new URI(url.toString() + "/myDir");
        Path path  = Paths.get(uri);
        if(!Files.exists(path)){
            Files.createDirectory(path);
        }
    } catch (URISyntaxException e) {
        throw new RuntimeException(e);
    }