package com.djk.io;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
/**
* 扫描文件并放入map中
* @author djk
*
*/
public class ScanFile
{
public static void main(String[] args)
{
IFileProcess iFileProcess = new FileProcessImpl();
Map<String,List<File>> map =iFileProcess.analyFile("D:/test");
}
}
/**
*处理文件接口
* @author djk
*
*/
interface IFileProcess
{
Map<String,List<File>> analyFile(String filePath);
}
/**
* 实现类
* @author djk
*
*/
class FileProcessImpl implements IFileProcess
{
private static Logger logger = Logger.getLogger(FileProcessImpl.class);
@Override
public Map<String, List<File>> analyFile(String path)
{
Map<String,List<File>> map = new HashMap<String, List<File>>();
logger.debug("进入方法 analyFile");
if (StringUtils.isEmpty(path))
{
logger.debug("路径为空......");
return map;
}
File file = new File(path);
diguiFile(file,map);
return map;
}
/**
* 递归扫描文件
*/
private void diguiFile(File file,Map<String,List<File>> map)
{
logger.debug("开始递归文件");
//如果文件是目录则调用自己否则把文件放入map中
if (file.isDirectory())
{
File [] files = file.listFiles();
for (File f : files)
{
diguiFile(f,map);
}
}else
{
String fileName = file.getName();
if (fileName.contains("djk"))
{
convertMap("djk",map,file);
}else if (fileName.contains("whx"))
{
convertMap("whx",map,file);
}else
{
logger.debug("该文件是垃圾文件:"+fileName);
}
}
}
/**
* 填充map
*/
private void convertMap(String key,Map<String,List<File>> map,File file)
{
logger.debug("填充map");
List<File> list = null;
if (null != map.get(key))
{
map.get(key).add(file);
}else
{
list = new ArrayList<File>();
list.add(file);
map.put(key, list);
}
}
}