使用java统计文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名)作为key,用个数作为value,放入到map集合中,并用两种方式遍历map集合(iterator和entry)。
时间: 2024-02-18 17:00:27 浏览: 34
好的,我可以为您提供这个问题的解答。
以下是Java代码实现:
```java
import java.io.File;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
public class FileCounter {
public static void main(String[] args) {
String folderPath = "/path/to/folder"; // 文件夹路径
Map<String, Integer> fileCountMap = new HashMap<String, Integer>();
countFiles(folderPath, fileCountMap);
System.out.println("使用iterator遍历map:");
Iterator<Entry<String, Integer>> iterator = fileCountMap.entrySet().iterator();
while (iterator.hasNext()) {
Entry<String, Integer> entry = iterator.next();
System.out.println(entry.getKey() + ": " + entry.getValue());
}
System.out.println("\n使用entry遍历map:");
for (Entry<String, Integer> entry : fileCountMap.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
private static void countFiles(String folderPath, Map<String, Integer> fileCountMap) {
File folder = new File(folderPath);
File[] files = folder.listFiles();
for (File file : files) {
if (file.isDirectory()) {
countFiles(file.getAbsolutePath(), fileCountMap);
} else {
String fileName = file.getName();
int dotIndex = fileName.lastIndexOf(".");
if (dotIndex > 0) {
String fileExt = fileName.substring(dotIndex + 1);
if (fileCountMap.containsKey(fileExt)) {
int count = fileCountMap.get(fileExt) + 1;
fileCountMap.put(fileExt, count);
} else {
fileCountMap.put(fileExt, 1);
}
}
}
}
}
}
```
解析:
1. `FileCounter` 类是入口类,其中 `main` 方法调用 `countFiles` 方法统计文件个数,并使用两种方式遍历 `fileCountMap`。
2. `countFiles` 方法递归遍历文件夹中的所有文件(包括子文件夹),并对每个文件的后缀名进行统计。如果 `fileCountMap` 中已经有该后缀名,则将对应的值加 1;否则,将该后缀名加入 `fileCountMap` 并设置初始值为 1。
3. `fileCountMap` 是一个 `Map` 集合,用于存储文件类型和个数。键是文件类型(后缀名),值是文件个数。
4. `iterator` 是一个迭代器,用于遍历 `fileCountMap` 并输出每个键值对。
5. `entry` 是一个 `Map.Entry` 对象,用于表示 `fileCountMap` 中的一个键值对。
注意事项:
1. 在使用 `File` 类读取文件时,需要捕获 `IOException` 异常。
2. 在使用 `Map` 集合时,需要注意空指针异常。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)