使用遞歸顽决,根據(jù)輸入文件夾路徑,返回該文件夾下的文件類型以及對應的數(shù)量
- 創(chuàng)建一個方法导匣,目的是拿到文件夾路徑下所有的文件(無論是文件還是目錄)進行判斷才菠,返回所有的文件類型和數(shù)量。
package com.xiahk;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class Test3 {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<String, Integer>();
Scanner sc = new Scanner(System.in);
System.out.println("輸入文件夾路徑");
File file = new File(sc.nextLine());
getFile(file, map);
Set<String> keySet = map.keySet();
for (String string : keySet) {
System.out.println(string + "類型的文件有 " + map.get(string) + "個");
}
}
- 首先獲得文件夾路徑贡定,將路徑下的所有文件轉(zhuǎn)換成File[]數(shù)組赋访,在遍歷該數(shù)組。遍歷是判斷File對象是否為文件,是的話就拿到文件的后綴名蚓耽。
- 在Map集合內(nèi)查看是否存在該類型文件后綴渠牲,如果沒有便放到集合中,對應的值設置為1步悠。存在的話就拿到對應的值加一再放進去嘱兼。
- 如果是文件夾的話,我們可以使用遞歸贤徒,調(diào)用本身的方法芹壕。
- 返回Map集合,遍歷便可拿到所有的文件類型以及對應的數(shù)量接奈。
public static void getFile(File file, Map<String, Integer> map) {
File[] files = file.listFiles();
for (File f2 : files) {
// 如果是文件
if (f2.isFile()) {
String name = f2.getName();
// 獲取文件的后綴名
String[] split = name.split("\\.");
int length = split.length;
String key = split[length - 1];
// 判斷是否存在
boolean iskey = map.containsKey(key);
if (iskey) {
map.put(key, map.get(key) + 1);
} else {
map.put(key, 1);
}
}
// 如果是文件夾
if (f2.isDirectory()) {
getFile(f2, map);
}
}
}
}
例如查看 E:\HBuilder 下的所有文件類型和數(shù)量
查看文件類型數(shù)量
以上是博主目前初學Java寫的踢涌,可能會有一些問題或者說有更好的方法來實現(xiàn)功能,希望大家可以留言互相交流序宦。
已知問題:
當路徑為存儲盤根目錄時睁壁,會有空指針異常
異常情況