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;
}
}
以上的类就实现了对目录的操作,包括删除,取大小以及深度。
其中在取目录深度时,我是通过分割字符串来求得其所有子目录相对于根目录的深度,然后再减去输入目录相对于根目录的深度,就得到了输入目录的深度。
闽公网安备 35060202000074号