专业文档搜索
手机娱乐 收藏夹 Flash吧 贴贴吧 文档库 Flash游戏 Flash动漫
Google
 
登录 |  注册  | 目录
Java - 遍厉目录,实现目录删除,取得目录大小及深度
于 2007-09-08 05:06:28.0 收藏在:生歌的网络收藏夹中。
 
评论
  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;
}
}
以上的类就实现了对目录的操作,包括删除,取大小以及深度。
其中在取目录深度时,我是通过分割字符串来求得其所有子目录相对于根目录的深度,然后再减去输入目录相对于根目录的深度,就得到了输入目录的深度。感觉这个方法执行效率不高,哪位朋友有更好的方法还望不吝赐教。

[收藏自:http://www.moon-soft.com/doc/19569.htm] 查看原网页


评论
标题
内容
贴图
用户 你还没有登录,请从这里登录免费注册
验证码
   
   
生歌的收藏夹
共收藏了:
19 项精彩内容
51 个精彩图片
生歌的收藏分类
全部    html    java    js    linux    mysql    web    世锦赛    其它    台湾    展会    开源    房产    搞笑    数据库    新闻    深圳    管理    财金   
生歌的图片分类
全部    2007年冰灾    冰灾    台湾    图标    奥运    明星    李冰冰    湖南    美女    趣图    运动   
百度主题
生歌的热点收藏
淘宝热销的产品
Copyright (c) Yeegle.com 2003
耗时 188 毫秒