Java统计目录大小
手机自带了2G的存储卡,最近因为SD卡空间的问题发现程序都装不了,于是就想找出卡里面到底是那些目录占用了实际的空间,windows按浏览器按大小排序解决不了目录的问题,只能自己写程序递归遍历了。最后发现是.android_secure这货占了600M的空间,这里是安装在SD卡中的程序,果断把之前没用的程序文件删掉,腾出了一大笔空间。想折腾了还可以用jfreechart用图标的形式将空间的使用情况展示出来,一目了然。
package time.goes.by; public class MainFrame { /** * @param args */ public static void main(String[] args) { FileAttr fileattr = new FileAttr(); String filepath = "J:\\.android_secure"; fileattr.listFileSize(filepath); fileattr.outputFileSize(); } }
package time.goes.by; import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; public class FileAttr { private Map<String, Long> fileSize = new HashMap<String, Long>(); public FileAttr() { } /** * 获取文件或目录大小 * @param f * @return 文件大小 单位字节 */ public long getFileSize(File f) { long size = 0; if (f.isDirectory()) { File flist[] = f.listFiles(); for (File file : flist) { size += getFileSize(file); } } else { size = f.length(); } return size; } public void listFileSize(String filepath) { String filename = null; long size = 0; try { File local = new File(filepath); if (local.isDirectory()) { File filelist[] = local.listFiles(); for (File file : filelist) { size = getFileSize(file); filename = file.getName(); fileSize.put(filename, size); } } else { //only a file size = getFileSize(local); filename = local.getName(); fileSize.put(filename, size); } } catch (Exception e) { e.printStackTrace(); } } /** * 输出结果 */ public void outputFileSize() { List<Map.Entry<String, Long>> fileinfo = new ArrayList<Map.Entry<String, Long>>(fileSize.entrySet()); //排序 Collections.sort(fileinfo, new Comparator<Map.Entry<String, Long>>() { public int compare(Map.Entry<String, Long> o1, Map.Entry<String, Long> o2) { return (int) (o2.getValue() - o1.getValue()); //return (o1.getKey()).toString().compareTo(o2.getKey()); } }); for (int i = 0; i < fileinfo.size(); i++) { System.out.println(fileinfo.get(i).getKey()+"'s size is: "+fileinfo.get(i).getValue()/1024/1024F); } } }

浙公网安备 33010602011771号