递归删除文件夹的两种方法

package net.jxatei.jsj.test;


import java.io.File;


public class DeleteDir
{


public static void main ( String[] args )
{
// 封装目录
File srcFolder = new File ( "copyfiles" );
// 递归实现
deleteFolder ( srcFolder );
// File src = new File ( "copyfiles" );
// deleteDir ( src , "" );
}


private static void deleteFolder ( File srcFolder )
{
// 获取该目录下的所有文件或者文件夹的File数组
File[] fileArray = srcFolder.listFiles ();


if ( fileArray != null )
{
// 遍历该File数组,得到每一个File对象
for ( File file : fileArray )
{
// 判断该File对象是否是文件夹
if ( file.isDirectory () )
{
deleteFolder ( file );
}
else
{
System.out.println ( file.getName () + "---" + file.delete () );
}
}


System.out
.println ( srcFolder.getName () + "---" + srcFolder.delete () );
}
}


/**
* 删除文件夹

* @param src
*            源文件对象
* @param name
*            文件路径
*/
public static void deleteDir ( File src , String name )
{


if ( ! src.exists () )
{
System.out.println ( "文件不存在" );
return;
}
else
{
if ( src.isDirectory () )
{


// 文件是否为目录
File[] files = src.listFiles ();
// 将目录的文件路径封装成数组
if ( files.length > 0 )
{
// 如果文件夹里面有文件,遍历目录
for ( File dir : files )
{
// 递归遍历目录
deleteDir ( dir , dir.getName () );
// 删除目录
dir.delete ();
// 删除目录的上一级文件夹
dir.getParentFile ().delete ();
System.out.println ( "文件夹已删除" );


}
}
else
{
// 否则是一个空目录,直接删除
src.delete ();
System.out.println ( "文件件删除成功" );
}


}
else if ( src.isFile () )
{
// 是文件的话,也可以直接删除
src.delete ();
System.out.println ( "删除成功" );
}


}


}


}

猜你喜欢

转载自blog.csdn.net/JavaMyDream/article/details/80863543