java程序 做一个这样的程序:统计某磁盘的使用情况 统计在这磁盘中,各种文件的个数和占磁盘空间
做一个这样的程序:统计某磁盘的使用情况
统计在这磁盘中,各种文件的个数和占磁盘空间的大小
要输出一个列表形式的结果
如:
.bmp 10个 12345678字节
.doc 3个 445566字节
.txt 1个 5566字节
拜托各位大神了 展开
import java.io.File;
import java.io.FileFilter;
import java.util.HashMap;
import java.util.Map;
public class T1 {
/**存放文件后缀 对应的大小*/
private static final Map<String, Long> sizeMap = new HashMap<String, Long>();
/**存放文件后缀 对应的个数*/
private static final Map<String, Integer> countMap = new HashMap<String, Integer>();
public static void main(String[] args) {
String path = "F:";
filter(path);
for(String key :sizeMap.keySet()) {
System.out.println("后缀:" + key + "\t字节:" + (sizeMap.get(key)==null?0:sizeMap.get(key)) + "\t个数为" + (countMap.get(key)==null?0:countMap.get(key)));
}
}
public static void filter(String path){
File file = new File(path);
file.listFiles(new FileFilter() {
@Override
public boolean accept(File f) {
if(f.isDirectory()) {
filter(f.getPath());
return false;
}
String fileName = f.getName();
if(fileName.indexOf(".") == -1) {
return false;
}
String suffix =fileName.split("\\.")[1];//获得文件后缀
//把文件后缀相同的字节数相加
Long size = (sizeMap.get(suffix)==null?0:sizeMap.get(suffix)) + f.length();
sizeMap.put(suffix, size);
//把文件后缀相同的个数相加
Integer count = (countMap.get(suffix)==null?0:countMap.get(suffix)) + 1;
countMap.put(suffix, count);
return false;
}
});
}
}
运行结果太长了,我随便截取点吧:
后缀:1-1 字节:1820 个数为2
后缀:dll_2016-05-23_000 字节:345 个数为1
后缀:dat 字节:20253796 个数为28
后缀:1-2 字节:1302 个数为2
后缀:md 字节:53548 个数为4
后缀:MF 字节:1105 个数为10
后缀:html 字节:745985 个数为75
后缀:lrc 字节:6872 个数为6
后缀:9-2 字节:1478 个数为2
后缀:dll_2016-03-31_000 字节:55 个数为1
后缀:9-3 字节:1436 个数为2
后缀:all 字节:3003366 个数为4
后缀:66b 字节:6786365 个数为1
后缀:withoutimage 字节:383536 个数为4
后缀:eclipse 字节:27666 个数为104
后缀:woff 字节:437588 个数为20
后缀:spr 字节:15084930 个数为311
后缀:mdl 字节:79521996 个数为487
后缀:m3d 字节:199680 个数为3
后缀:JPG 字节:261216 个数为113
后缀:fgd 字节:37819 个数为1
后缀:79d 字节:23795338 个数为3
后缀:79e 字节:8001129 个数为1
后缀:gif 字节:1453085 个数为597
后缀:dll_2016-04-26_000 字节:115 个数为1
后缀:70LeagueV 字节:549361 个数为1
后缀:lst 字节:47492 个数为13
后缀:26q_v1 字节:7284946 个数为1
后缀:sql 字节:87909 个数为6
后缀:11-4 字节:1230 个数为2
后缀:11-3 字节:1804 个数为2
后缀:timer 字节:10452 个数为3
后缀:html5only 字节:467448 个数为4
后缀:dll_2016-05-17_000 字节:115 个数为1
后缀:11-2 字节:1770 个数为2
后缀:11-1 字节:2032 个数为2
后缀:flexslider-min 字节:65025 个数为3
后缀:dll_2016-07-01_000 字节:13427 个数为2
后缀:greenxf 字节:97562 个数为1
特地敲了代码 要采纳啊,我这测试的是F盘 是可以的, 你有什么疑问 可追问我