java file 文件名查找_java小程序,用java在指定目录或以及子目录中找出同名文件,java File过滤文件名后找同名文件...

1 packagecom.paic.icore.pams.auto.util;2

3 importjava.io.File;4 importjava.util.ArrayList;5 importjava.util.HashMap;6 importjava.util.Iterator;7 importjava.util.List;8 importjava.util.Map;9 importjava.util.Map.Entry;10

11 /**

12 *@authorWhite lion13 *14 */

15 public classFindSameFile {16 static int filterFilesCount=0,filterFileNamesCount=0;17 static List filterFiles = new ArrayList(),filterFileNames = new ArrayList();18 static Map sameFileNames = new HashMap(),fileNames = new HashMap();19 staticFile root,aRoot,bRoot;20

21 //execue init data

22 static{23 filterFileNames.add("svn-");24 filterFileNames.add("index.html");25

26 filterFiles.add(".svn");27 filterFiles.add("image");28 filterFiles.add("htmlDemo");29

30 //目录A

31 aRoot = new File("E:/Software/src/webroot");32 //目录B

33 bRoot = new File("D:/Software/webroot");34

35 root = new File("E:/Software/src/webroot");36 }37

38 //execue

39 public static voidmain(String[] args) {40 long start =System.currentTimeMillis();41 //findFile(root, fileNames, null, null);

42 findSameFileName(aRoot,bRoot);43 System.out.println("耗时:"+(System.currentTimeMillis()-start)+"ms,sameFileNames count:" + sameFileNames.size()+",fileNames count:" + fileNames.size()+",filterFilesCount:" + filterFilesCount+",filterFileNamesCount:" +filterFileNamesCount);44 }45

46 public static voidfindSameFileName(File aRoot, File bRoot) {47 long start =System.currentTimeMillis();48 Map aFileNames = new HashMap();49 findFile(aRoot,aFileNames,filterFiles,filterFileNames);50

51 Map bFileNames = new HashMap();52 findFile(bRoot,bFileNames,filterFiles,filterFileNames);53

54 System.out.println(aRoot+" list:\n"+aFileNames.keySet());55 System.out.println(bRoot+" list:\n"+bFileNames.keySet());56

57 Iterator>iterator;58 Map stayFindFileNames = new HashMap();59 if(aFileNames.size() >=bFileNames.size()){60 iterator=aFileNames.entrySet().iterator();61 stayFindFileNames=bFileNames;62 }else{63 iterator=bFileNames.entrySet().iterator();64 stayFindFileNames=aFileNames;65 }66

67 while(iterator.hasNext()) {68 Entry next =iterator.next();69 String key =next.getKey();70 Object value =next.getValue();71

72 if(null!=stayFindFileNames.get(key)){73 Object stayObj =stayFindFileNames.get(key);74

75 if(value instanceofjava.io.File){76 File a =(File) value;77 addFileToSameFileNamesBox(stayObj, a);78 }else if(value instanceofList){79 List list = (List) value;80 for(File f : list) {81 addFileToSameFileNamesBox(stayObj, f);82 }83

84 }85

86 }87

88 }89 System.out.println("findSameFileName 耗时:"+(System.currentTimeMillis()-start)+"ms,sameFileNames count:" + sameFileNames.size()+",sameFileNames list:\n" +sameFileNames.keySet());90 }91

92

93 public static void findFile(File root, Map fileNames,List filterFiles,ListfilterFileNames) {94 if (root.exists() &&root.isDirectory()) {95 for(File file : root.listFiles()) {96 if(file.isFile()) {97 if(null!=filterFileNames){98 int tmpFilterFileNamesCount=filterFileNamesCount;99 for(String filter : filterFileNames) {100 if(file.getName().indexOf(filter)>-1){101 filterFileNamesCount++;102 System.out.println("filter fileName1:"+file.getPath());//这里输出文件名!

103 break;104 }105 }106 if(tmpFilterFileNamesCount list = new ArrayList();113 fileNames.put(b.getName(), list);114 list.add(b);115 list.add(file);116 }else if(value instanceofList){117 List b = (List) value;118 b.add(file);119 }120 }else{121 fileNames.put(file.getName(), file);122 }123 //System.out.println("find:"+file.getPath());//这里输出文件名!

124 } else if(file.isDirectory()) {125 if(null!=filterFiles){126 if(filterFiles.contains(file.getName())){127 filterFilesCount++;128 System.out.println("filter file2:"+file.getPath());//这里输出文件名!

129 continue;130 }131 }132 findFile(file, fileNames, filterFiles, filterFileNames);133 }134

135 }136 }137

138 }139

140 public static voidaddFileToSameFileNamesBox(File file) {141 if(null!=sameFileNames.get(file.getName())){142 Object value =sameFileNames.get(file.getName());143 if(value instanceofjava.io.File){144 File b =(File) value;145 List list = new ArrayList();146 sameFileNames.put(b.getName(), list);147 list.add(b);148 list.add(file);149 }else if(value instanceofList){150 List b = (List) value;151 b.add(file);152 }153 }else{154 sameFileNames.put(file.getName(), file);155 }156 }157

158 public static voidaddFileToSameFileNamesBox(Object stayObj, File file) {159 if(stayObj instanceofjava.io.File){160 File stayFile =(File) stayObj;161 if(stayFile.getName().equals(file.getName())){162 addFileToSameFileNamesBox(stayFile);163 }164 }else if(stayObj instanceofList){165 List list = (List) stayObj;166 for(File f : list) {167 if(f.getName().equals(file.getName())){168 addFileToSameFileNamesBox(f);169 }170 }171 }172 }173

174 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值