Как получить путь к каталогу WebContent / WEB-INF / classes - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть следующий код:

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 голосов
/ 21 декабря 2018

Я бы попробовал что-то вроде этого:

    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);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...