用java写一个程序,要求:统计一个文件夹中每种文件的个数并且打印,需要考虑多级文件的情况:比如说aaa文件下里面的ccc文件夹里面还有文件夹和文件。打印格式如下:txt:3个;doc:4个;
时间: 2023-06-19 07:08:06 浏览: 153
以下是用Java实现的程序,可以实现统计一个文件夹中每种文件的个数并打印:
```java
import java.io.File;
import java.util.HashMap;
import java.util.Map;
public class CountFiles {
public static void main(String[] args) {
String path = "D:\\test"; // 文件夹路径
Map<String, Integer> map = new HashMap<>();
countFiles(path, map);
printCount(map);
}
public static void countFiles(String path, Map<String, Integer> map) {
File file = new File(path);
File[] files = file.listFiles();
for (File f : files) {
if (f.isDirectory()) {
countFiles(f.getAbsolutePath(), map);
} else {
String extension = getExtension(f.getName());
if (extension != null) {
if (map.containsKey(extension)) {
map.put(extension, map.get(extension) + 1);
} else {
map.put(extension, 1);
}
}
}
}
}
public static String getExtension(String fileName) {
int index = fileName.lastIndexOf(".");
if (index == -1) {
return null;
} else {
return fileName.substring(index + 1);
}
}
public static void printCount(Map<String, Integer> map) {
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue() + "个;");
}
}
}
```
该程序首先定义了要统计的文件夹路径,然后定义了一个`Map`用于存储每种文件的个数,接着调用`countFiles`方法进行统计,最后调用`printCount`方法打印统计结果。
`countFiles`方法实现了递归遍历文件夹的功能,如果遍历到的文件是文件夹则继续递归遍历,如果是文件则获取文件后缀名并更新`Map`中对应的值。
`getExtension`方法实现了获取文件后缀名的功能,如果文件没有后缀名则返回`null`。
`printCount`方法打印统计结果,逐个遍历`Map`中的键值对并打印。
阅读全文