java - 需要一种方法来读取两个文件并使用扫描器类输出差异

标签 java file class compare

这就是我到目前为止所拥有的。我不知道从这里该去哪里。我需要一种方法来输出两个文件中的差异

    package JwolfrumCh6;
    import java.util.*;
    import java.io.*;
    import java.util.Scanner;

    public class JwolfrumCh6 {

        public static void main(String[] args) throws FileNotFoundException  
    {
            Scanner console = new Scanner(System.in);

            System.out.print("Enter File one Name");
            String file1 = console.nextLine();
            Scanner input1 = new Scanner(new File(file1));

            System.out.print("Enter File two Name");
            String file2 = console.nextLine();
            Scanner input2 = new Scanner(new File(file2));
        }
        public static void compareFiles(Scanner input1, Scanner input2) {

            while(input1.hasNextLine() || input2.hasNextLine()) {

            }

        }
    }

最佳答案

在 main 中调用静态方法并在compareFiles 方法中实现以下逻辑。

  1. 将文件 1 的所有行读取到 ArrayList
  2. 将文件 2 的所有行读取到另一个 ArrayList
  3. 使用 ArrayList 的 removeAll 方法(如下所示)来获取每个文件中的差异。

    import java.io.File;
    import java.io.FileNotFoundException;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    
    public class FML {
    
    public static void main(String[] args) throws FileNotFoundException {
        Scanner console = new Scanner(System.in);
    
        System.out.print("Enter File one Name");
        String file1 = console.nextLine();
        Scanner input1 = new Scanner(new File(file1));
    
        System.out.print("Enter File two Name");
        String file2 = console.nextLine();
        Scanner input2 = new Scanner(new File(file2));
        compareFiles(input1, input2);
    }
    
    public static void compareFiles(Scanner input1, Scanner input2) {
         List<String> list1 = new ArrayList<String>();
         List<String> list2 = new ArrayList<String>();
        while (input1.hasNextLine()) {
            list1.add(input1.nextLine());
        }
        while (input2.hasNext()) {
            list2.add(input2.nextLine());
        }
        List<String> tmpList = new ArrayList<String>(list1);
        tmpList.removeAll(list2);
    
        System.out.println("content from file1 which is different from file2");
        for(int i=0;i<tmpList.size();i++){
            System.out.println(tmpList.get(i)); 
        }
    
        System.out.println("content from file2 which is different from file2");
    
        tmpList = list2;
        tmpList.removeAll(list1);
        for(int i=0;i<tmpList.size();i++){
            System.out.println(tmpList.get(i)); 
        }
    
    }
    }
    

关于java - 需要一种方法来读取两个文件并使用扫描器类输出差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48837316/

相关文章:

OOP:setter 应该是私有(private)的吗?

class - 使用类引用进行多态和继承(第2部分)?

Python - 访问父成员

java - 如何使用 Hibernate 为有序列表创建映射文件?

备份 iOS 组容器?

file - 拒绝访问特定目录中的特定文件类型

Python输入/输出解释

引用 Firebase 时抛出 Java java.lang.ClassCastException

JavaEE 和 Firebase 管理 sdk - setValueAsync 不将数据推送到实时 Firebase

java - 如何使用 Java 以独立于平台的方式读取 Windows 共享驱动器?