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

原创 2004年06月14日 10:31:00

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;
  }
}
以上的类就实现了对目录的操作,包括删除,取大小以及深度。

其中在取目录深度时,我是通过分割字符串来求得其所有子目录相对于根目录的深度,然后再减去输入目录相对于根目录的深度,就得到了输入目录的深度。感觉这个方法执行效率不高,哪位朋友有更好的方法还望不吝赐教。

Java - 遍厉目录,实现目录删除,取得目录大小及深度

 import java.io.*;import java.util.*;public class ManageContent {private int dir_deep=0;private int ...
  • jaylongli
  • jaylongli
  • 2008年11月29日 14:41
  • 841

linux 删除用户账号和主目录

删除用户的命令是:userdel 用户名 比如我刚建立的用户是:zhyh,则命令为:userdel zhyh 执行以上命令成功后利用rm -rf /home/zhyh/ 就可以了  也...
  • u010154760
  • u010154760
  • 2015年04月08日 14:38
  • 2786

[shell]计算当前目录的最大深度

#!/bin/sh #目录的深度 int_Depth=0 caldirdepth() { #for循环,假设目录的最大深度是10 for i in $(seq 10); d...
  • kaisawind
  • kaisawind
  • 2013年08月24日 18:28
  • 624

Linux命令:du+find分析目录大小,清理空间

一、背景   服务器的/home目录空间使用超过99%,且以每日约1Gb的速度增长。下午检查时还剩余14G,需要立即检查清理空间。 二、过程     2.1 分析什么占用了空间     命令:...
  • heroicpoem
  • heroicpoem
  • 2017年09月26日 10:04
  • 153

JAVA 目录深度遍历 练习

import java.io.File; public class FileTest { public static void main(String[] args) { File d...
  • u012128533
  • u012128533
  • 2014年09月24日 21:49
  • 364

得到当前目录的最大深度以及最深路径

看到同事说需要得到目录的深度,想了一下,查了下资料,组合出下面这条命令: find ./ -type d | awk -F'/' '{print NF-1" "$0}' | sort | tail ...
  • topgun38
  • topgun38
  • 2012年11月06日 11:21
  • 1532

python 统计各目录的大小(懒人有动力)

#!/usr/bin/python #Filename: filesize.py import sys,os,re,time print sys.argv[1] mypath = sy...
  • xiaoyaoxiaoshenxian
  • xiaoyaoxiaoshenxian
  • 2016年12月23日 11:01
  • 364

android 删除某个目录及其子目录

/*要加载这两个类*/ import java.io.File; import android.text.TextUtils; 删除目录及其目录下的子目录和文件 public void del...
  • junzhang1122
  • junzhang1122
  • 2016年03月07日 16:25
  • 1177

linux查看目录大小 linux统计目录大小并排序 查看目录下所有一级子目录文件夹大小 du -h --max-depth=1 |grep []

常用命令 du -h --max-depth=1 |grep [TG] |sort   #查找上G和T的目录并排序 du -sh    #统计当前目录的大小,以直观方式展现 du -h --m...
  • learner198461
  • learner198461
  • 2017年01月18日 16:19
  • 3065

powershell复制目录结构和删除空目录

文件夹操作自从用了bat的加强版:powershell,不得不说,很好很强大。 微软从win7开始,就已经将其嵌入到系统,并希望用户使用它。在这里需要说的是vs也支持powershell的调试,它已...
  • u012611878
  • u012611878
  • 2016年06月16日 23:10
  • 5075
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:遍厉目录,实现目录删除,取得目录大小及深度
举报原因:
原因补充:

(最多只允许输入30个字)