您的位置:首页 > 编程语言 > Java开发

java IO-输入输出流(四)

2007-11-30 04:45 423 查看
四、删除文件和目录

删除文件和目录关键技术点如下:
1、File的delete方法能删除文件和目录
2、当File指向一个目录时,只有当目录为空(没有子目录和子文件)时,才能用delete方法将其删除

实例演示:


package book.io;




import java.io.File;






/** *//**


* 删除文件或目录


* @author joe


*


*/






public class DeleteFileUtil ...{




/** *//**


* 删除文件,可以是单个文件或文件夹


* @param fileName 待删除的文件名


* @return 文件删除成功返回true, 否则返回false


*/




public static boolean delete(String fileName) ...{


File file = new File(fileName);




if(!file.exists()) ...{


System.out.println("删除文件失败:" + fileName + "文件不存在!");


return false;




} else ...{




if (file.isFile()) ...{


//如果是文件


return DeleteFileUtil.deleteFile(fileName);




} else ...{


//否则是目录


return DeleteFileUtil.deleteDir(fileName);


}


}


}






/** *//**


* 删除单个文件


* @param fileName 待删除的文件的文件名


* @return 单个文件删除成功返回true, 否则返回false


*/




public static boolean deleteFile(String fileName) ...{


File file = new File(fileName);


//如果文件路径对应的文件存在,并且是一个文件,则直接删除




if (file.exists() && file.isFile()) ...{




if (file.delete()) ...{


System.out.println("删除单个文件:" + fileName + "成功!");


return true;




} else ...{


System.out.println("删除单个文件:" + fileName + "失败!");


return false;


}




} else ...{


System.out.println("删除单个文件是失败:" + fileName + "文件不存在或不是一个文件!");


return false;


}


}






/** *//**


* 删除目录(文件夹)以及目录下的文件


* @param dir 待删除目录的文件路径


* @return 目录删除成功返回true,否则返回false


*/




public static boolean deleteDir(String dir) ...{


//如果dir不以文件分隔符结尾,自动添加文件分隔符




if (!dir.endsWith(File.separator)) ...{


dir = dir + File.separator;


}


File dirFile = new File(dir);


//如果dir对应的文件不存在,或者不是一个目录,则退出




if (!dirFile.exists() || !dirFile.isDirectory()) ...{


System.out.println("删除目录失败:" + dir + "目录不存在或不是目录!");


return false;


}


boolean flag = true;


//删除文件夹下所有文件(包括子目录)


File[] files = dirFile.listFiles();




for (int i = 0; i < files.length; i++) ...{


//删除子文件




if(files[i].isFile()) ...{


flag = DeleteFileUtil.deleteFile(files[i].getAbsolutePath());




if (!flag) ...{


break;


}


}


//删除子目录




else if (files[i].isDirectory()) ...{


flag = DeleteFileUtil.deleteDir(files[i].getAbsolutePath());




if (!flag) ...{


break;


}


}


}




if (!flag) ...{


System.out.println("删除目录失败!");


return false;


}


//删除当前目录




if (dirFile.delete()) ...{


System.out.println("删除目录:" + dir + "成功!");


return true;




} else ...{


return false;


}


}






public static void main(String[] args) ...{


//删除单个文件


String file = "D:/work/temp/temp0/temp1/temp.txt";


DeleteFileUtil.deleteFile(file);


System.out.println();


//删除一个目录


String dir = "D:/work/temp/temp0/temp1";


DeleteFileUtil.deleteDir(dir);


System.out.println();


//删除文件


dir = "D:/work/temp/temp0";


DeleteFileUtil.delete(dir);


}




}

程序输出:
删除单个文件是失败:D:/work/temp/temp0/temp1/temp.txt文件不存在或不是一个文件!

删除单个文件:D:/work/temp/temp0/temp1/temp2/tempFile.txt成功!
删除目录:D:/work/temp/temp0/temp1/temp2/成功!
删除单个文件:D:/work/temp/temp0/temp1/temp5171.txt成功!
删除单个文件:D:/work/temp/temp0/temp1/temp5172.txt成功!
删除单个文件:D:/work/temp/temp0/temp1/temp5173.txt成功!
删除单个文件:D:/work/temp/temp0/temp1/temp5174.txt成功!
删除单个文件:D:/work/temp/temp0/temp1/temp5175.txt成功!
删除单个文件:D:/work/temp/temp0/temp1/temp5176.txt成功!
删除单个文件:D:/work/temp/temp0/temp1/temp5177.txt成功!
删除单个文件:D:/work/temp/temp0/temp1/temp5178.txt成功!
删除单个文件:D:/work/temp/temp0/temp1/temp5179.txt成功!
删除单个文件:D:/work/temp/temp0/temp1/temp5180.txt成功!
删除目录:D:/work/temp/temp0/temp1/成功!

删除目录:D:/work/temp/temp0/成功!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: