列举出给定目录中各种文件的个数算法实现

来源:互联网 发布:掉头发怎么办知乎 编辑:程序博客网 时间:2024/05/18 15:28

前几天去笔试,有一道研发的笔试题,题目是这样的:递归遍历一个目录,统计目录及其子目录中各种类型文件的数目,统计完成后打印出各种文件的扩展名及其数目。当时笔试写的不完整,今天整理出来,以便参考。

package com.jlau.test;import java.io.File;import java.util.HashMap;import java.util.Map;import java.util.Set;/** * 列举出给定目录中各种文件的个数 * @author 薛寒 创建日期 : 2014-9-19 上午11:26:22 */public class ListFile {// 存储每个文件的扩展名(key) 和 个数(value)private static Map map = new HashMap();public static Map listFile(File f) {if (f.isDirectory()) {// 是一个目录File[] files = f.listFiles();for (File file : files) {if (file.isDirectory()) {listFile(file);} else {// 是一个文件String name = file.getName();String ext = getFileExt(name);System.out.println(name + "====" + ext);if (map.containsKey(ext)) {// 如果扩展名已存在,则+1int alreadyExistCount = map.get(ext);map.put(ext, alreadyExistCount + 1);} else {map.put(ext, 1);// 不存在,是首次加入,则置为1}}}}return map;}/** * 获取文件扩展名 创建日期 : 2014-9-19下午12:48:32 * * @param fileName * @return */public static String getFileExt(String fileName) {int pos = fileName.lastIndexOf(".");if (pos <= 0) {return "";} else {String ext = fileName.substring(pos, fileName.length()).toLowerCase();return ext;}}public static void main(String[] args) {File f = new File("E:/找工作相关");Map map = listFile(f);Set keySet = map.keySet();for (String key : keySet) {System.out.println(key + " 个数 :" + map.get(key));}}}

0 0
原创粉丝点击