我有以下代码:
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("");
但没有一个起作用。
答案 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);
}