java判断两个文件夹是否存在相同的文件

本文介绍了一个简单的Java程序,用于比较两个目录中的文件,并列出不在对方目录中的文件。通过迭代每个目录中的文件并将其名称存储在哈希映射中,程序可以有效地找出哪些文件存在于一个目录但不存在于另一个目录。

public static void main(String[] args) {
  compare("D:/2-3-4/", "D:/2-3-5-1/");
 }

 public static void compare(String frompath, String topath) {
  Map<String,String> fromMap = new HashMap<String, String>();
  Map<String,String> toMap = new HashMap<String, String>();
  try {
   System.out.println("----------------------fromMap开始----------------------------");
   LinkedList list = new LinkedList();
   File dir = new File(frompath);
   File file[] = dir.listFiles();
   for (int i = 0; i < file.length; i++) {
    if (file[i].isDirectory())
     list.add(file[i]);
    else{
     fromMap.put(file[i].getName(),file[i].getName());
     //System.out.println(file[i].getName());
    }
   }
   System.out.println("----------------------toMap开始----------------------------");
   dir = new File(topath);
   File[] tofile = dir.listFiles();
   for (int i = 0; i < tofile.length; i++) {
    if (tofile[i].isDirectory())//判断读到的是否是文件夹
     list.add(tofile[i]);
    else{
     toMap.put(tofile[i].getName(),tofile[i].getName());
     //System.out.println(tofile[i].getName());
    }
     
   }
   System.out.println("判断toMap中的值是否在fromMap中存在.");
   Iterator it = toMap.entrySet().iterator();
   while(it.hasNext()){
    Map.Entry<String, String> e = (Entry<String, String>) it.next();
    if(fromMap.containsKey(e.getKey())){
    }else{
     System.out.println(e.getKey());
    }
   }
   System.out.println("判断fromMap中的值是否在toMap中存在.");
   Iterator it1 = fromMap.entrySet().iterator();
   while(it1.hasNext()){
    Map.Entry<String, String> e = (Entry<String, String>) it1.next();
    if(toMap.containsKey(e.getKey())){
    }else{
     System.out.println(e.getKey());
    }
   }
  } catch (Exception e) {

   e.printStackTrace();
  }

 }

Java中,判断两个文件夹是否完全一致,通常需要比较它们包含的所有文件和子目录。你可以通过递归的方式遍历两个文件夹,并逐一对比每个文件的名称、大小和最后修改时间。下面是一个简单的示例: ```java import java.io.File; import java.util.HashMap; public boolean areFoldersEqual(File folder1, File folder2) { // 检查两个文件是否存在并且是目录 if (!folder1.exists() || !folder2.exists() || !folder1.isDirectory() || !folder2.isDirectory()) { return false; } // 获取每个文件夹下的文件列表 HashMap<String, File> files1 = getFiles(folder1); HashMap<String, File> files2 = getFiles(folder2); // 如果文件数量不同,说明不一致 if (files1.size() != files2.size()) { return false; } // 遍历并比较文件 for (String fileName : files1.keySet()) { File file1 = files1.get(fileName); File file2 = files2.get(fileName); // 比较文件大小和最后修改时间 if (!file1.equals(file2) || !file1.length() == file2.length() || !file1.lastModified() == file2.lastModified()) { return false; } } return true; } private HashMap<String, File> getFiles(File folder) { HashMap<String, File> files = new HashMap<>(); File[] fileList = folder.listFiles(); if (fileList != null) { for (File file : fileList) { if (file.isFile()) { files.put(file.getName(), file); } else if (file.isDirectory()) { files.putAll(getFiles(file)); } } } return files; } ``` 上述代码首先检查两个文件夹是否存在,然后获取每个文件夹下的所有文件和子目录,并存储在一个HashMap中以便于后续的比较。如果文件的数量、大小和最后修改时间有任何一项不匹配,就认为这两个文件夹不一样。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值