@Test
public void fileProcessor() {
File file = new File("D://Snipaste-2.2.4-Beta-x64");
HashMap<String, Object> data = new HashMap<>();
data.put("fileSize", BigDecimal.ZERO);
data.put("fileCount", 0);
data.put("dirCount", 0);
data.put("dirEnd", false);
data.put("dirType", "目录:");
data.put("indent", "");
fileRecursion(file, data);
}
private void fileRecursion(File file, HashMap<String, Object> data) {
//获取文件大小
BigDecimal fileDecimal = new BigDecimal(String.valueOf(file.length()));
String type = (String)data.get("dirType");
String indent = (String)data.get("indent");
//对文件进行操作
if (file.isFile()) {
//将目录下的文件大小累加起来
BigDecimal fileSize = (BigDecimal) data.get("fileSize");
data.put("fileSize", fileSize.add(fileDecimal));
//目录下的文件数
int fileCount = (int) data.get("fileCount");
data.put("fileCount", ++fileCount);
//输出文件信息
System.out.println(indent + type + file.getName() + "(" + unit(fileDecimal) + ")");
}
//对目录进行操作
if (file.isDirectory()) {
//输出目录信息
System.out.println(indent + type + file.getName() + "(" + unit(fileDecimal) + ")");
//获取目录下的文件和目录
File[] files = file.listFiles();
//每个目录新建一个引用类型的可加变量,单独为该目录统计大小,初始化为零
HashMap<String, Object> thisData = new HashMap<>();
thisData.put("fileSize", BigDecimal.ZERO);
thisData.put("fileCount", 0);
thisData.put("dirCount", 0);
thisData.put("dirEnd", false);
if (fi
Java的File类实现文件目录递归及统计相关数据
最新推荐文章于 2022-12-07 21:17:32 发布