当前位置: 首页 > 知识库问答 >
问题:

Java比较两个文本文件并编写不同的文件

方英耀
2023-03-14
public class TxtCompare
{   
    public static void main(String[] args) throws IOException
    {   
        BufferedReader reader1 = new BufferedReader(new FileReader("x"));
        BufferedReader reader2 = new BufferedReader(new FileReader("x"));
         
        String line1 = reader1.readLine();
        String line2 = reader2.readLine();
         
        boolean areEqual = true;
        int lineNum = 1;
         
        while (line1 != null || line2 != null)
        {
            if(line1 == null || line2 == null)
            {
                areEqual = false;
                break;
            }
            else if(! line1.equalsIgnoreCase(line2))
            {
                areEqual = false;
                break;
            }
            line1 = reader1.readLine();
            line2 = reader2.readLine();
            lineNum++;
        }
         
        if(areEqual)
        {
            System.out.println("Two files have same content.");
        }
        else
        {
            System.out.println("Two files have different content. They differ at line "+lineNum);
             
            System.out.println("File1 has "+line1+" and File2 has "+line2+" at line "+lineNum);

共有1个答案

通安宁
2023-03-14

您的代码应该按照预期工作,但可以简化和改进。

循环中的两个if语句具有相同的内容,因此可以连接。这还删除了一个空检查,因为EqualSignoRecase中已经执行了该检查:

if (line1 == null || !line1.equalsIgnoreCase(line2)) {
    areEqual = false;
     break;
}

您可以为这两个读取器使用try-with-resources,并删除显式调用以关闭,因为这是隐式完成的。

try (BufferedReader reader1 = new BufferedReader(new FileReader("file1.txt"));
     BufferedReader reader2 = new BufferedReader(new FileReader("file2.txt"))) {
    // code here
}
try (BufferedReader reader1 = new BufferedReader(new FileReader("file1.txt"));
     BufferedReader reader2 = new BufferedReader(new FileReader("file2.txt"))) {

    int lineNum = 1;
    boolean areEqual = true;
    while (true) {
        String line1 = reader1.readLine();
        String line2 = reader2.readLine();
        if (line1 == null && line2 == null) {
            break;
        } else if (line1 == null || !line1.equalsIgnoreCase(line2)) {
            System.out.println("Two files have different content. They differ at line " + lineNum);
            System.out.println("File1 has " + line1 + " and File2 has " + line2 + " at line " + lineNum);
            areEqual = false;
        }
        lineNum++;
    }

    if (areEqual) {
        System.out.println("Two files have same content.");
    }
}
 类似资料:
  • 问题内容: 我想比较两个每个都有三列的文本文件。一个文件有999行,另一个文件有757行。我希望将不同的242行存储在不同的文件中。我使用随机网络生成器创建了第一个文件(999行)(999行是边,第三列是第一,第二列之间的权重- 源节点和目标节点)。 文件格式-文件1、2 我试过了 逐行比较两个文件,并在另一个文件中产生差异,并 找到两个文本文件之间的差异,每行一个,并且http://www.da

  • 我有两个文件-file1.txt和file2.txt。我想用powershell比较这两个文件,并生成第三个文件(file3.txt),它包含从file1.txt开始的所有行减去file2.txt中的行 你能想出什么办法来做这件事吗?

  • 问题内容: 我有以下两个收藏夹,其中包含学生证。 id是格式为111-1111的字符串。例如ID 221-2534、215-6365等。 这些ID与其他数据一起位于固定格式的文件中。也就是说,前8个字符ID,后10个字符名称,后10个字符地址,依此类推。 我将id读入集合,如下所示: 此处,文件中的条目按SSN排序。因此,我相信所形成的集合也将得到排序。 现在: 案例: 我想通过比较两个集合来了解

  • 本文向大家介绍Java编程实现比对两个文本文件并标记相同与不同之处的方法,包括了Java编程实现比对两个文本文件并标记相同与不同之处的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java编程实现比对两个文本文件并标记相同与不同之处的方法。分享给大家供大家参考,具体如下: 使用需求: 文件1里面是需要比较的内容,文件2是被比较的文本,现在需要找到在文件1中每一行的文本在文件2中是否存

  • 问题内容: 我的Java应用程序需要具有比较文件系统中两个不同文件并确定它们的二进制内容是否相同的能力。 这是我当前的代码: 任何有关如何正确进行比较功能的提示或建议,将不胜感激。 问题答案: 最简单的方法是将内容读取为两个字符串,例如 ,然后对这些执行。您是否需要更复杂的差分功能?

  • 我想比较两个音频文件,例如mp3和wav。我用Musicg通过指纹进行比较。 musicg只在wav上工作,所以我使用JAVE将mp3转换为wav 现在的问题是,当我尝试比较两个我不转换指纹的wav时,工作完美,但是当我比较两个不同的音频时,我必须转换它总是返回两个音频是相同的。