强制删除文件夹中的所有文件
我一直在使用一段特定的代码来删除文件夹中的文件,但事实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; }