比较两个导入的文本文件

时间:2014-04-17 08:12:19

标签: java arrays arraylist import

嘿,伙计们只是想看看我的想法是否有效,我在学习java的第二学期。 这是hw任务的指示: 设计一个类,检查两个文本文件的内容是否相同,如果不相同,则确定有多少行不同。如果它们在一个或多个字符中不同,则行不同。 所以,我想我应该逐行阅读文本,将每一行转换为字符串,然后将每一行存储在数组中的一个位置。一旦我完成了这一步,我就必须使用数组。然后,我计划浏览每个数组并进行比较。 我对这个问题的看法是否正确?

import java.io.*;
import java.util.*;

public class myfilereader
{
    public static void main (String[] args) throws java.io.IOException
    {
        ArrayList<String> Diff = new ArrayList<String>();
        Scanner s = new Scanner(new File("/Users/Home/Desktop/File2.txt"));
        ArrayList<String> ArrayList1 = new ArrayList<String>();
        while (s.hasNext())
        {
            ArrayList1.add(s.next());
        }
        s.close();

        Scanner s1 = new Scanner(new File("/Users/Home/Desktop/File1.txt"));
        ArrayList<String> ArrayList2 = new ArrayList<String>();
        while (s.hasNext())
        {
            ArrayList2.add(s1.next());
        }
        s1.close();
        HashSet hs = new HashSet();
        for(String i : ArrayList1) hs.add(i);
        for(String i : ArrayList2)
        {
            if(!hs.add(i))
                Diff.add(i);
        }

        String result = "+";
        for (int i = 0; i < Diff.size(); i++)
        {   
            result += " " + Diff.get(i);
        }
        System.out.println(result);

    }
}

以下是我得到的确切错误“

Exception in thread "main" java.lang.IllegalStateException: Scanner closed
    at java.util.Scanner.ensureOpen(Scanner.java:1046)
    at java.util.Scanner.hasNext(Scanner.java:1310)
    at myfilereader.main(myfilereader.java:19)

1 个答案:

答案 0 :(得分:0)

我会用它:Apache Commons Collections 然后将两个文件加载到ArrayList中并使用其中一个Collections方法