我想创建一个新目录。 如果它不存在 - 创建它。 如果它存在 - 我想“重置”/“截断”目录。 换句话说,我想获得一个空目录Java - 创建一个空目录
我的问题是 -
- ,我读了检查目录的存在,以决定是否 与否来创建它是一个坏练习,所以我不能确定接下来应该做什么。 你可以阅读关于为什么这是一个不好的做法的解释How to create a directory in Java?
- 我可以迭代所有文件并删除它们,但我正在寻找一种更优雅的方法。
我想创建一个新目录。 如果它不存在 - 创建它。 如果它存在 - 我想“重置”/“截断”目录。 换句话说,我想获得一个空目录Java - 创建一个空目录
我的问题是 -
使用你身边目录的清洁和创效益一些Java 8模式,
File file = new File(path);
if(!file.exists())
{
file.mkdir();
}
else
{
Files.walk(Paths.get("C:/test/ABC/"))
.filter(Files::isRegularFile)
.map(Path::toFile)
.forEach(File::delete);
}
。的确,这是一个不好的做法。由于如果存在相同的目录名,mkdir无法创建目录。因此,不需要再次检查是否存在具有相同名称的目录。这就是为什么在致电mkdir之前检查是不好的做法。
你可以做的简单方法是首先检查目录是否存在。如果这样的话删除它并调用的mkdir
你可以窥视JDK Bug report。社区成员提到它是一个错误。
@paz reingold如果答案有帮助,请接受答案并进行表决。 –
Re 1:你是否同时访问目录(如果你确实认为有一种清空目录的原子方式)? Re 2.,这就是发生在引擎盖下的事情。 – assylias
看看commons-io。例如。 http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html#cleanDirectory(java.io.File) – msfoster
有一点是肯定的:不要使用'File' 。阅读其他问题的答案。他们有很多信息。 – RealSkeptic