Java编写 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中文件个数和文件夹个数。 【复杂:统计每种类型的文件个数】
时间: 2023-08-07 21:03:39 浏览: 87
好的,这是一个比较基础的文件处理问题,下面是 Java 代码实现:
```java
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class CountFilesDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入文件夹路径:");
String path = sc.nextLine();
File folder = new File(path);
if (!folder.exists()) {
System.out.println("输入路径不存在!");
return;
}
int fileCount = 0;
int folderCount = 0;
Map<String, Integer> typeCount = new HashMap<>();
countFiles(folder, typeCount); // 统计文件夹中文件个数和文件夹个数
System.out.println("文件夹个数:" + folderCount);
System.out.println("文件个数:" + fileCount);
System.out.println("每种类型的文件个数:" + typeCount);
}
public static void countFiles(File folder, Map<String, Integer> typeCount) {
int fileCount = 0;
int folderCount = 0;
File[] files = folder.listFiles();
if (files == null || files.length == 0) return;
for (File file : files) {
if (file.isDirectory()) {
folderCount++;
countFiles(file, typeCount); // 递归统计子文件夹中的文件
} else {
fileCount++;
String type = getFileType(file.getName());
if (typeCount.containsKey(type)) {
typeCount.put(type, typeCount.get(type) + 1);
} else {
typeCount.put(type, 1);
}
}
}
System.out.println(folder.getAbsolutePath() + " 中的文件个数:" + fileCount);
System.out.println(folder.getAbsolutePath() + " 中的文件夹个数:" + folderCount);
}
public static String getFileType(String fileName) {
int index = fileName.lastIndexOf(".");
if (index == -1) {
return "unknown";
}
return fileName.substring(index);
}
}
```
这个程序使用了 Java 中的 `File` 类,可以递归遍历文件夹中的所有子文件夹和文件。在遍历过程中,我们可以统计文件夹个数和文件个数,并且使用 `Map` 类型的变量 `typeCount` 统计每种类型的文件个数。最后输出结果即可。
需要注意的是,这段代码只是一个简单的实现,没有考虑异常情况,比如输入的路径不存在,或者遍历过程中某个文件或文件夹无法访问等情况。在实际应用中需要根据具体情况进行处理。
阅读全文