IO_File_案例_資料夾統計
阿新 • • 發佈:2018-11-02
1:首先來統計一下某個資料夾下的子孫級檔案的名稱 (遞迴演算法)
package com.jianshun; import java.io.File; /** * 遞迴:方法自己呼叫自己 * 列印子孫目錄和檔名稱 * @author fanfan * */ public class DirDemo04 { public static void main(String[] args) { File src = new File("F:/workspace/IO_study01"); printName(src,0); } //遞迴列印子孫級目錄和檔名稱 public static void printName(File src,int deep){ //控制前面層次 for(int i=0;i<deep;i++){ System.out.print("-"); } System.out.println(src.getName()); if(null == src || !src.exists()){//遞迴頭 return; }else if(src.isDirectory()){ for(File s : src.listFiles()){ printName(s,deep+1); } } } }
2:統計檔案的大小(以面向物件的思想來寫)
package com.jianshun; import java.io.File; public class DirCount { //檔案大小 private long len; //資料夾數量 private int dirSize; //檔案數量 private int fileSize; //資料夾 private String path; //源 private File src; public int getDirSize() { return dirSize; } public int getFileSize() { return fileSize; } public long getLen() { return len; } public DirCount(String path){ this.path = path; this.src = new File(path); count(this.src); } public static void main(String[] args) { DirCount dir = new DirCount("F:/workspace/IO_study01"); System.out.println(dir.getLen()); } //統計大小 public void count(File src){ //獲取大小 if(null != src && src.exists()){ if(src.isFile()){ len += src.length(); this.fileSize++; }else{ this.dirSize++; for(File s : src.listFiles()){ count(s); } } } } }