您的位置:首页 > 其它

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

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

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));}}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 map 递归