[Java]統計指定目錄中檔案的個數和總的大小
阿新 • • 發佈:2018-11-06
題目
給定一個指定的目錄,例如"E:\音樂",求出該目錄下檔案的總數,以及所有檔案加起來的大小.
·複習了File類的使用方法
·複習了使用遞迴演算法查詢檔案
程式碼實現
說明
ArrayList<File> fileList; //用於儲存找到的每一個檔案
File root; //根目錄
遞迴演算法查詢檔案
public void searchFiles() {
File[] files = root.listFiles();
int length = files.length;
for (int i = 0; i < length; i++) {
if (files[i].isDirectory()) {
root = files[i];
searchFiles(); //如果是目錄就繼續遞迴查詢
} else {
fileList.add(files[i]); //如果是檔案就加入fileList
}
}
}
統計檔案個數和總的大小
返回由此檔案的長度,位元組為單位
File file= new File();
long length=file.length();
程式碼如下
public void countFiles() {
long totalSize = 0;
System.out.println("檔案數:" + fileList.size());
for (int i = 0; i < fileList.size(); i++) {
totalSize += fileList.get(i).length();
}
System.out.println ("檔案總大小:" + totalSize);
}
完整程式碼
import java.io.File;
import java.util.ArrayList;
public class FileCounter {
ArrayList<File> fileList;
File root;
public FileCounter(String pathName) {
root = new File(pathName);
fileList = new ArrayList<>();
}
public void searchFiles() {
File[] files = root.listFiles();
int length = files.length;
for (int i = 0; i < length; i++) {
if (files[i].isDirectory()) {
root = files[i];
searchFiles();
} else {
fileList.add(files[i]);
}
}
}
public void countFiles() {
long totalSize = 0;
System.out.println("檔案數:" + fileList.size());
for (int i = 0; i < fileList.size(); i++) {
totalSize += fileList.get(i).length();
}
System.out.println("檔案總大小:" + totalSize);
}
public static void main(String[] args) {
String pathName = "E:\\音樂";
FileCounter counter = new FileCounter(pathName);
counter.searchFiles();
counter.countFiles();
}
}
測試結果