У меня есть следующий код:
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("");
но никто не работает.