比较不同目录文件夹下同名文件的数量和显示同名文件名
来源:互联网 发布:sqlserver工程师培训 编辑:程序博客网 时间:2024/04/29 10:58
大概思路:1、得到文件目录和目录下的文件,并把文件存储在list集合中
2、使用map集合把文件名存在key中,value值存文件对应的路径
3、把一个文件夹下和另一个文件下同名的文件移除
4、使用强for语句遍历map
有优化方法还请大家多多指教。
package file.compare;import java.io.File;import java.io.FileFilter;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Scanner;public class CompareFileName {public static void main(String[] args) {// 过滤后缀名的对象FileFilter filterByFile = (FileFilter) new FilterByFile("");// 路径下的文件对象File dirA = new File("C:\\Users\\Administrator\\Desktop\\新建文件夹\\");File dirB = new File("C:\\Users\\Administrator\\Desktop\\OprObject\\");// 存储文件的list对象List<File> listA = new ArrayList<File>();List<File> listB = new ArrayList<File>();// 调用相应方法,添加文件到集合listA = getFileList(dirA, listA, filterByFile);listB = getFileList(dirB, listB, filterByFile);// 只存储文件名和文件路径的map对象Map<String, String> mapA = new HashMap<String, String>();Map<String, String> mapB = new HashMap<String, String>();for (File file : listA) {mapA.put(file.getName(), file.getPath());}for (File file : listB) {mapB.put(file.getName(), file.getPath());}System.out.println("输入A或者B,输入A表示显示A文件夹中独有的内容B亦然");Scanner str = new Scanner(System.in);if ("A".equals(str.nextLine())) {mapA.keySet().removeAll(mapB.keySet());// 移除文件名及后缀相同的文件System.out.println("A文件夹有而B文件夹没有的文件:");int count = 0;for (Entry<String, String> entry : mapA.entrySet()) {System.out.println(entry.getKey());count++;}System.out.println("不相同的文件个数:" + count);} else {mapB.keySet().removeAll(mapA.keySet());// 移除文件名及后缀相同的文件System.out.println("B文件夹有而A文件夹没有的文件:");int countA = 0;for (Entry<String, String> entry : mapB.entrySet()) {System.out.println(entry.getKey());countA++;}System.out.println("不相同的文件个数:" + countA);}}private static List<File> getFileList(File dir, List<File> list, FileFilter filterByFile) {// 遍历路径下的所有文件File[] files = dir.listFiles();for (File file : files) {if (file.isDirectory()) {getFileList(file, list, filterByFile);// 如果是目录需要递归} else {if (filterByFile.accept(file))list.add(file);}}return list;}}public class FilterByFile implements FileFilter {public String suffix;public FilterByFile(String suffix) {super();this.suffix = suffix;}public boolean accept(File pathname) {return pathname.getName().endsWith(suffix);}}
阅读全文
0 0
- 比较不同目录文件夹下同名文件的数量和显示同名文件名
- 不同目录下同名文件的提取与拷贝
- shell脚本——不同目录下同名文件内容比较
- 怎样获取文件夹里的文件数量并显示文件名
- shell脚本——统计不同目录下同名文件个数
- c++ 得到文件夹下所有文件的文件名和文件夹下所有文件夹名
- 获取某个目录下所有文件夹名和文件名
- Ubuntu删除两个文件夹下同名同内容的文件V1.2
- 读取文件夹下的文件数量 并输出文件名
- [程序段] 列出指定目录下的所有文件夹名和文件名
- [Object C]_[初级]_[创建文件路径时,已存在同名目录和文件名的问题的解决方案]
- java_递归遍历文件目录结构,打印所有的目录名和文件名
- 不同包路径下同名类的hibernate冲突问题
- python实现文件夹名/文件名/文件内容的关键字替换
- 显示某个目录下的所有文件和文件夹
- C# 文件操作(全部) 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名
- C#文件操作 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名
- C# 文件操作(全部) 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名
- js-DOM知识点
- Golang面试解析
- iOS输入框和button圆角问题
- 三、Python的输入输出
- Python编程:从入门到实践的动手试一试答案(第九章)
- 比较不同目录文件夹下同名文件的数量和显示同名文件名
- Hough Transform
- bootstrap3 侧边导航栏
- Dialog 去除边框 以及全设置全屏时隐藏状态栏
- Clumsy
- 清除认证缓存
- 去掉IntelliJ IDEA生成的mybatis映射文件中黄色和绿色的背景
- MSYS2环境搭建
- Spring MVC多文件上传示例