[Java]统计指定目录中文件的个数和总的大小
题目
给定一个指定的目录,例如"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();
}
}