2017-07-31 53 views
0

我想创建一个新目录。 如果它不存在 - 创建它。 如果它存在 - 我想“重置”/“截断”目录。 换句话说,我想获得一个空目录Java - 创建一个空目录

我的问题是 -

  1. ,我读了检查目录的存在,以决定是否 与否来创建它是一个坏练习,所以我不能确定接下来应该做什么。 你可以阅读关于为什么这是一个不好的做法的解释How to create a directory in Java?
  2. 我可以迭代所有文件并删除它们,但我正在寻找一种更优雅的方法。
+1

Re 1:你是否同时访问目录(如果你确实认为有一种清空目录的原子方式)? Re 2.,这就是发生在引擎盖下的事情。 – assylias

+1

看看commons-io。例如。 http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html#cleanDirectory(java.io.File) – msfoster

+1

有一点是肯定的:不要使用'File' 。阅读其他问题的答案。他们有很多信息。 – RealSkeptic

回答

0

使用你身边目录的清洁和创效益一些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); 
    } 
1

。的确,这是一个不好的做法。由于如果存在相同的目录名,mkdir无法创建目录。因此,不需要再次检查是否存在具有相同名称的目录。这就是为什么在致电mkdir之前检查是不好的做法。

你可以做的简单方法是首先检查目录是否存在。如果这样的话删除它并调用的mkdir

你可以窥视JDK Bug report。社区成员提到它是一个错误。

+0

@paz reingold如果答案有帮助,请接受答案并进行表决。 –