强制删除文件夹中的所有文件

我一直在使用一段特定的代码来删除文件夹中的文件,但事实certificate它很成问题,因为我可能忘了关闭一两个InputStream。 我的代码是如此之大,以至于我无法看到所有未关闭的输入流。 有没有办法删除文件是否有一个打开的InputStream?

这是我一直在使用的代码片段;

File fin = new File("C:/ABC Statements final/"); File[] finlist = fin.listFiles(); for (int n = 0; n < finlist.length; n++) { if (finlist[n].isFile()) { System.gc(); Thread.sleep(2000); finlist[n].delete(); } } 

我编辑了代码。 这个版本有效。

提供的代码块中没有InputStream实例。

要不编写大量未经测试的IO代码,请查看apache.commons.io项目。 特别是在FileDeleteStrategy类中,用于文件删除操作。

您的代码可能如下所示:

 File fin = new File("C:/ABC Statements final/"); for (File file : fin.listFiles()) { FileDeleteStrategy.FORCE.delete(file); } 

您可以使用:

 FileUtils.deleteDirectory(File directory) 

来自Apache Commons

使用Apache Commons IO:

 File dir = ... FileUtils.deleteQuietly(dir); dir.mkdirs(); 

无需以这种方式检查exception。

使用:

  import org.apache.commons.io.FileUtils; FileUtils.cleanDirectory(fin); 

文档:

  /** * Clean a directory without deleting it. * * @param directory directory to clean * @throws IOException in case cleaning is unsuccessful */ 

为了使用它,你需要一个依赖:

Maven的:

  commons-io commons-io 2.6  

摇篮:

 compile 'commons-io:commons-io:2.6' 
 public void removeDir() { try { File dir = new File((System.getProperty("user.dir")+"/ReportFolderToMail"+timeStamp)); if (dir.isDirectory()) { File[] files = dir.listFiles(); if (files != null && files.length > 0) { for (File aFile : files) { System.gc(); Thread.sleep(2000); FileDeleteStrategy.FORCE.delete(aFile); System.out.println("delet file" +aFile); } } dir.delete(); System.out.println("delet" +dir); } else { dir.delete(); } } catch(Exception e) { e.printStackTrace(); } 
 public boolean removeDir() { try { //destFile = new File((System.getProperty("user.dir")+"/FileName")) // checks if the directory has any file File dir = destFile; if (dir.isDirectory()) { File[] files = dir.listFiles(); if (files != null && files.length > 0) { for (File aFile : files) { System.gc(); Thread.sleep(2000); FileDeleteStrategy.FORCE.delete(aFile); System.out.println("delet file" +aFile); } } dir.delete(); System.out.println("delet" +dir); } else { dir.delete(); } } catch(Exception e) { logger.log(LogStatus.FATAL, "Exception Occured While Deleting Folder : " +e); } return true; }