WEB开发网      婵犵數濞€濞佳囧磹婵犳艾鐤炬い鎰堕檮閸嬬喐銇勯弽銊с€掗梻鍕閺岋箑螣娓氼垱笑闂佽姘﹂褔婀佸┑鐘诧工妤犲憡绂嶉崜褏纾奸弶鍫涘妼缁楁岸鏌熷畡鐗堝殗闁诡喒鏅犲畷褰掝敃閵堝棙顔忔繝鐢靛仦閸ㄥ爼骞愰幘顔肩;闁规崘绉ぐ鎺撳亹闁绘垶锕╁Λ鍕⒑閹肩偛濡奸悗娑掓櫇缁顓兼径妯绘櫇闂佹寧绻傞弻濠囨晝閸屾稓鍘甸柣搴㈢⊕閿氶柣蹇ョ稻缁绘繃绻濋崘銊т紝闂佽鍨伴崯鏉戠暦閻旂⒈鏁傞柛鈾€鏅欑槐妯衡攽閻愬樊鍤熷┑顔藉劤铻為柛鏇ㄥ墯閸欏繘鏌嶉崫鍕櫣缂佲偓婢跺绠鹃柟瀛樼箘閿涘秵顨ラ悙顏勭伈闁诡喖缍婂畷鎯邦槻婵℃彃顭烽弻娑㈠Ω閵夈儺鍔夌紓浣稿€哥粔褰掑极閹剧粯鏅搁柨鐕傛嫹 ---闂傚倷鐒︾€笛兠洪埡鍛闁跨噦鎷�
开发学院WEB开发Jsp 实现目录删除,取得目录大小及深度 阅读

实现目录删除,取得目录大小及深度

 2008-01-05 09:57:35 来源:WEB开发网 闂傚倷绶氬ḿ褍螞閹绢喖绠柨鐕傛嫹闂傚倷绀侀幉锟犲垂閻㈠灚宕查柟鎵閸庡秵銇勯幒鎴濃偓鐢稿磻閹炬枼妲堟繛鍡楃С濞岊亞绱撻崒姘扁枌闁瑰嚖鎷�婵犵數濮幏鍐川椤撴繄鎹曢梻渚€娼уú銈吤洪妸鈺佺劦妞ゆ帊鑳堕埊鏇㈡煏閸モ晛浠х紒杈╁仱閺佹捇鏁撻敓锟�闂傚倷绶氬ḿ褍螞閹绢喖绠柨鐕傛嫹  闂傚倷鑳舵灙缂佺粯顨呴埢宥夊即閵忕姵鐎梺缁樺姈椤愮厧鈽夊Ο閿嬬€婚梺褰掑亰閸撴稑鈻斿鑸碘拺闁告稑饪村▓鏃€绻涚仦鍌氬闁崇粯鎹囬獮瀣攽閹邦剚顔傛俊鐐€栧濠氬储瑜忛幉鎾晸閿燂拷
核心提示:import java.io.*;import java.util.*;public class ManageContent {PRivate int dir_deep=0;private int dir_size = 0;private int sourcepath_deep; //输入路径相对于根目录的深度priv

  import java.io.*;
  import java.util.*;
  
  public class ManageContent {
   PRivate int dir_deep=0;
   private int dir_size = 0;
   private int sourcepath_deep; //输入路径相对于根目录的深度
   private Hashtable ht=new Hashtable(); //储存输入路径下的所有子目录,及其相对于根目录的深度keys=(String)dirPath,values=(Integer)dirDeep
  
   public synchronized int getSize(String dir_path) throws FileNotFoundException {
    File dir = new File(dir_path);
    if (!dir.exists()) {
     throw new FileNotFoundException();
    }
    if (!dir.isDirectory()) {
     dir_size = (int) dir.length();
    }
    else {
     File[] fe = dir.listFiles();
     for (int i = 0; i < fe.length; i++) {
      if (fe[i].isDirectory()) {
       getSize(fe[i].toString());
      }
      else {
       dir_size += fe[i].length();
      }
     }
    }
    return dir_size;
   }
  
   public synchronized void deleteFiles(String dir_path) throws FileNotFoundException {
    File file = new File(dir_path);
    if (!file.exists()) {
     throw new FileNotFoundException();
    }
    if (file.isDirectory()) {
     File[] fe = file.listFiles();
     for (int i = 0; i < fe.length; i++) {
      deleteFiles(fe[i].toString());
      fe[i].delete(); //删除已经是空的子目录
     }
    }
    file.delete(); //删除总目录
   }
  
   private void allDeep(File file){
    File[] fe = file.listFiles();
    for (int i = 0; i < fe.length; i++) {
     if (fe[i].isDirectory()) {
      allDeep(fe[i]); //取得其所有子目录的深度
      ht.put(fe[i].toString(),new Integer(count(fe[i].toString()) - sourcepath_deep));
     }
    }
   }
  
   public synchronized int getDeep(String dir_path) throws FileNotFoundException{
    File file = new File(dir_path);
    if (!file.exists()) {
     throw new FileNotFoundException();
    }
    if(!file.isDirectory()){
     return -1; //输入路径不是目录时就返回-1
    }
    sourcepath_deep=count(file.toString());
    allDeep(file);
    Enumeration enum=ht.keys();
    int max=0;
    String keys;
    Integer values;
    while(enum.hasMoreElements()){
     keys=(String)enum.nextElement();
     values=(Integer)ht.get(keys);
     if(values.intValue()>max)
      max=values.intValue();
    }
    return max;
   }
  
   private int count(String str){
    String regEx="/";
    if(System.getProperty("file.separator").equals("\\")) //windows和unix下的路径分割符不一样
      regEx="\\\\";
    return str.split(regEx).length;
   }
  }
  以上的类就实现了对目录的操作,包括删除,取大小以及深度。
  
  其中在取目录深度时,我是通过分割字符串来求得其所有子目录相对于根目录的深度,然后再减去输入目录相对于根目录的深度,就得到了输入目录的深度。

Tags:实现 目录 删除

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接