java 文件递归删除文件夹_JAVA利用递归删除文件和文件夹
看了一個網(wǎng)友寫的JAVA刪除文件例子,覺得寫得很羅嗦,這里重寫以下,就當(dāng)練練手,呵呵。
import java.io.*;
/**
* it provides some util methods to operate file or folder.
* @author zhangxuebao
*
*/
public class FiltUtil {
/**
* delete the specified file or folder.if the folder has sub items,
* the items alsowill be deleted .
* @param f the file or folder.
* @throws IOException
*/
public static void deleteFile(File f) throws IOException
{
if(!f.exists())
throw new IOException("指定文件或者目錄不存在:"+f.getName());
//如果是文件夾,刪除其中所有子項目
if(f.isDirectory())
{
File subs[] = f.listFiles();
for (int i = 0; i < subs.length; i++)
deleteFile(subs[i]);
}
//直接刪除
f.delete();
}
}
原版本//
一個File對象,如果是目錄,那么delete()方法要求目錄已經(jīng)是空的,否則不能刪除。為了不管如何都刪除一個指定文件夾下的所有內(nèi)容,于是有了今天隨手的一個小段子,算是初學(xué)Java的小練習(xí):
import java.io.*;
public class DeleteAll {? //刪除文件夾下所有內(nèi)容,包括此文件夾? public void delAll(File f) throws IOException {??? if(!f.exists())//文件夾不存在不存在????? throw new IOException("指定目錄不存在:"+f.getName());
boolean rslt=true;//保存中間結(jié)果??? if(!(rslt=f.delete())){//先嘗試直接刪除????? //若文件夾非空。枚舉、遞歸刪除里面內(nèi)容????? File subs[] = f.listFiles();????? for (int i = 0; i <= subs.length - 1; i++) {??????? if (subs[i].isDirectory())????????? delAll(subs[i]);//遞歸刪除子文件夾內(nèi)容??????? rslt = subs[i].delete();//刪除子文件夾本身????? }????? rslt = f.delete();//刪除此文件夾本身??? }
if(!rslt)????? throw new IOException("無法刪除:"+f.getName());??? return;? }
public static void main(String[] args) {??? DeleteAll da= new DeleteAll();??? try {????? da.delAll(new File("someDir"));??? }??? catch (IOException ex) {????? ex.printStackTrace();??? }? }}
總結(jié)
以上是生活随笔為你收集整理的java 文件递归删除文件夹_JAVA利用递归删除文件和文件夹的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 反射获取类的几种方法
- 下一篇: iOS统计项目的代码总行数