File類的檔案型別數量統計
阿新 • • 發佈:2018-12-09
需求:
/*
* 輸入一個資料夾路徑 用map記錄檔案型別出現的次數
*
* txt 數量
* java 數量
* png 數量
* ....
*/
import java.io.File;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Set;
public class Kll {
public static void main(String[] args) {
// 建立map物件
HashMap<String, Integer> map = new HashMap<>();
// 建立檔案物件
File file = new File("/Users/lanou/Desktop/Test");
getMap(file, map);
System.out.println(map);
}
// 獲取型別並裝入集合的方法
public static void getMap(File file, HashMap<String, Integer> map) {
// 獲取給出目錄下的一級目錄檔案
File[] files = file.listFiles();
// 遍歷檔案陣列
for (File subFile : files) {
// 判斷
if (subFile.isFile()) {
// 是檔案
// 獲取名字並按點切割
String[] split = subFile.getName().split("\\.");
// 最後一個元素是檔案型別,也是map的key值
String key = split[split.length - 1];
// 判斷檔案型別是否包含在map中
if (map.containsKey(key)) {
// 包含時,取出加一
Integer value = map.get(key);
value++;
// 再放回map中
map.put(key, value);
}else {
// 不包含時,放入
map.put(key, 1);
}
}else {
// 是資料夾,遞迴呼叫
getMap(subFile, map);
}
}
}
}
執行結果: