Java 需要使用scanner类读取两个文件并输出差异的方法

Java 需要使用scanner类读取两个文件并输出差异的方法,java,file,class,compare,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 FileNotFoundExceptio

这就是我目前所拥有的。我不知道接下来该怎么办。我需要一个方法来输出两个文件中的差异

    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中调用static方法,并在compareFiles方法中实现下面的逻辑

  • 将文件1的所有行读取到ArrayList
  • 将文件2的所有行读取到另一个ArrayList
  • 如下图所示,使用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.io.File;
    导入java.io.FileNotFoundException;
    导入java.util.ArrayList;
    导入java.util.List;
    导入java.util.Scanner;
    公共类FML{
    公共静态void main(字符串[]args)引发FileNotFoundException{
    扫描仪控制台=新扫描仪(System.in);
    System.out.print(“输入文件名”);
    字符串file1=console.nextLine();
    扫描仪输入1=新扫描仪(新文件(文件1));
    System.out.print(“输入两个文件名”);
    String file2=console.nextLine();
    扫描仪输入2=新扫描仪(新文件(文件2));
    比较文件(输入1、输入2);
    }
    公共静态无效比较文件(扫描仪输入1、扫描仪输入2){
    List list1=新的ArrayList();
    List list2=新的ArrayList();
    while(input1.hasNextLine()){
    list1.add(input1.nextLine());
    }
    while(input2.hasNext()){
    list2.add(input2.nextLine());
    }
    List tmpList=新的ArrayList(list1);
    tmpList.removeAll(列表2);
    System.out.println(“文件1中的内容不同于文件2”);
    
    对于(int i=0;iHi,你说使用Scanner类输出是什么意思?Scanner用于读取输入。如果你想比较两个文件,你可以检查一下:感谢在我的Java类中,我们没有使用数组。这是下一章。你的帖子对我帮助很大