删除文件目录的Java类
2007-05-21 02:51
204 查看
import java.util.*;
public class File extends java.io.File {
File(java.io.File file,String str){
super(file,str);
}
File(String str1,String str2){
super(str1,str2);
}
File(String str){
super(str);
}
File(java.net.URI uri){
super(uri);
}
public static void deleteDirs(java.io.File dir)throws Exception{
m_root=dir;
m_dirs= new ArrayList();
if(!m_root.isDirectory()){
throw new Exception("Exception:\""+m_root.toString()+"\" is not a director");
}
else{
for(int i=0;i<m_dirs.size();i++){
System.out.println(((File)m_dirs.get(i)).toString());
}
//delete all director
try{
m_dirs.add(m_root);
myDelete();
}
catch(Exception e){
e.printStackTrace();
}
}
}
/**
*
* @param dirPath String a director file path;
* @throws IOException if dirPath is not a director file path
*/
public static void deleteDirs(String dirPath)throws Exception{
m_root=new java.io.File(dirPath);
deleteDirs(m_root);
}
public static void deleteSubDirs(String dirPath)throws Exception{
m_root=new java.io.File(dirPath);
deleteSubDirs(m_root);
}
public static void deleteSubDirs(java.io.File dir)throws Exception{
m_root=dir;
m_dirs= new ArrayList();
//deleteDirs(m_root);
if(!m_root.isDirectory()){
throw new Exception("Exception:\""+m_root.toString()+"\" is not a director");
}
else{
for(int i=0;i<m_dirs.size();i++){
System.out.println(((File)m_dirs.get(i)).toString());
}
try{
myDelete();
}
catch(Exception e){
e.printStackTrace();
}
}
}
/*
* visit all a director and save them in a list
*/
private static void visitAll(java.io.File tempRoot){
//m_dirs.add(tempRoot);
//System.out.println("函数开始处:"+m_dirs.size());
java.io.File[] dirs=tempRoot.listFiles();
if(dirs!=null){
List dirsList=Arrays.asList(dirs);
//while(dirsList!=null){
if(dirsList==null){
try{
tempRoot.delete();
}
catch(Exception e){
e.printStackTrace();
}
}
else{
m_dirs.addAll(dirsList);
//System.out.println(m_dirs.size());
/*
for(int i=0;i<dirs.length;i++){//print dirs
System.out.println("NO."+ ++counter+":"+dirs[i].toString());
}
*/
//System.out.println(m_dirs.size());
for(int i=0;i<dirsList.size();i++){
tempRoot=(java.io.File)dirsList.get(i);
visitAll(tempRoot);
/*
dirs=tempRoot.listFiles();
List dirsList= Arrays.asList(dirs);
*/
//System.out.println(tempRoot.toString());
}
}
//return true;
//}
}
}
/*
* do delete
*/
private static void myDelete()throws Exception{
//m_dirs.add(m_root);
visitAll(m_root);
if(m_dirs!=null){
//System.out.println("删除前:"+m_dirs.size());
//System.out.println(m_dirs.size());
for(int i=m_dirs.size()-1;i>=0;i--){
java.io.File f= (java.io.File)m_dirs.remove(i);
//File f= (File)m_dirs.get(i);
//System.out.println(f.toString());
String fileName=f.toString();
if(!f.delete()){
throw new Exception("Exception: delete file "+ fileName+" false!");
//System.out.println("删除文件/文件夹"+fileName+"失败!");
}
}
}
else{
throw new Exception("Exception: read file list of "+m_root.toString()+"false!");
//System.out.println("ArrayList==null");
}
}
/*
* root director
*/
private static java.io.File m_root;
private static ArrayList m_dirs;
//private static int counter=0;
public static void main(String[] args) {//测试类
File file =new File("H:/小说/小四/天亮说晚安");
try{
File.deleteDirs("H:/小说/小四/天亮说晚安");
//File.deleteDirs(file);
//File.deleteSubDirs("H:/小说/小四/天亮说晚安");
//File.deleteSubDirs(file);
//File f=new File("F:/test.txt");
//f.delete();
}
catch(Exception e){
e.printStackTrace();
}
System.out.println("删除成功~");
}
}
public class File extends java.io.File {
File(java.io.File file,String str){
super(file,str);
}
File(String str1,String str2){
super(str1,str2);
}
File(String str){
super(str);
}
File(java.net.URI uri){
super(uri);
}
public static void deleteDirs(java.io.File dir)throws Exception{
m_root=dir;
m_dirs= new ArrayList();
if(!m_root.isDirectory()){
throw new Exception("Exception:\""+m_root.toString()+"\" is not a director");
}
else{
for(int i=0;i<m_dirs.size();i++){
System.out.println(((File)m_dirs.get(i)).toString());
}
//delete all director
try{
m_dirs.add(m_root);
myDelete();
}
catch(Exception e){
e.printStackTrace();
}
}
}
/**
*
* @param dirPath String a director file path;
* @throws IOException if dirPath is not a director file path
*/
public static void deleteDirs(String dirPath)throws Exception{
m_root=new java.io.File(dirPath);
deleteDirs(m_root);
}
public static void deleteSubDirs(String dirPath)throws Exception{
m_root=new java.io.File(dirPath);
deleteSubDirs(m_root);
}
public static void deleteSubDirs(java.io.File dir)throws Exception{
m_root=dir;
m_dirs= new ArrayList();
//deleteDirs(m_root);
if(!m_root.isDirectory()){
throw new Exception("Exception:\""+m_root.toString()+"\" is not a director");
}
else{
for(int i=0;i<m_dirs.size();i++){
System.out.println(((File)m_dirs.get(i)).toString());
}
try{
myDelete();
}
catch(Exception e){
e.printStackTrace();
}
}
}
/*
* visit all a director and save them in a list
*/
private static void visitAll(java.io.File tempRoot){
//m_dirs.add(tempRoot);
//System.out.println("函数开始处:"+m_dirs.size());
java.io.File[] dirs=tempRoot.listFiles();
if(dirs!=null){
List dirsList=Arrays.asList(dirs);
//while(dirsList!=null){
if(dirsList==null){
try{
tempRoot.delete();
}
catch(Exception e){
e.printStackTrace();
}
}
else{
m_dirs.addAll(dirsList);
//System.out.println(m_dirs.size());
/*
for(int i=0;i<dirs.length;i++){//print dirs
System.out.println("NO."+ ++counter+":"+dirs[i].toString());
}
*/
//System.out.println(m_dirs.size());
for(int i=0;i<dirsList.size();i++){
tempRoot=(java.io.File)dirsList.get(i);
visitAll(tempRoot);
/*
dirs=tempRoot.listFiles();
List dirsList= Arrays.asList(dirs);
*/
//System.out.println(tempRoot.toString());
}
}
//return true;
//}
}
}
/*
* do delete
*/
private static void myDelete()throws Exception{
//m_dirs.add(m_root);
visitAll(m_root);
if(m_dirs!=null){
//System.out.println("删除前:"+m_dirs.size());
//System.out.println(m_dirs.size());
for(int i=m_dirs.size()-1;i>=0;i--){
java.io.File f= (java.io.File)m_dirs.remove(i);
//File f= (File)m_dirs.get(i);
//System.out.println(f.toString());
String fileName=f.toString();
if(!f.delete()){
throw new Exception("Exception: delete file "+ fileName+" false!");
//System.out.println("删除文件/文件夹"+fileName+"失败!");
}
}
}
else{
throw new Exception("Exception: read file list of "+m_root.toString()+"false!");
//System.out.println("ArrayList==null");
}
}
/*
* root director
*/
private static java.io.File m_root;
private static ArrayList m_dirs;
//private static int counter=0;
public static void main(String[] args) {//测试类
File file =new File("H:/小说/小四/天亮说晚安");
try{
File.deleteDirs("H:/小说/小四/天亮说晚安");
//File.deleteDirs(file);
//File.deleteSubDirs("H:/小说/小四/天亮说晚安");
//File.deleteSubDirs(file);
//File f=new File("F:/test.txt");
//f.delete();
}
catch(Exception e){
e.printStackTrace();
}
System.out.println("删除成功~");
}
}
相关文章推荐
- 删除目录以及目录下的所有文件(六)
- ubuntu 删除目录及子目录中特定文件
- 查找并删除当前目录及其子目录下的所有重复文件
- 删除当前目录下除了system目录的其他文件
- python中的目录递归的创建和目录及其下的文件递归的删除
- linux 下pyhton 删除指定目录下所有的重复内容的文件
- vs2010删除当前目录下特定字符打头的所有文件
- 如何删除某个目录下(包含子目录下)的某个名字的文件
- VC删除非空目录及所有文件的代码
- 递归删除指定目录下的.git文件
- Java 删除文件和目录代码
- java 删除文件 及目录
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- 根据字段状态删除指定目录文件的shell脚本
- linux下删除文件目录
- PHP删除目录及目录下所有文件或删除指定文件方
- Java新建目录、新建文件、删除文件、删除文件夹、删除文件夹里面的所有文件、复制整个文件夹内容
- .net,C#,Ftp各种操作,上传,下载,删除文件,创建目录,删除目录,获得文件列表等
- cmd 递归删除目录或文件
- linux c删除超时文件包括空目录