簡體   English   中英

比較兩個文件並用Java進行總結

[英]Compare two file and summarize with Java

我有2個txt文件,並且都有一些不同的數據。 我正在比較兩者,然后總結報告在哪里進行了更改。 但是我的代碼對於這兩個文件僅運行了1行:

輸入項

v1.txt:

  ABCD DEFG
  XYZ AAA
  NNN

v2.txt:

  ABCD DEF
  XYZ AAA
  NN

輸出我收到的內容:兩個文件具有不同的內容。

They differ at line 1
File1 has ABCD DEFG and File2 has ABCD DEF at line 1

碼:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class CompareTextFiles {
    public static void main(String[] args) throws IOException {
        BufferedReader reader1 = new BufferedReader(new FileReader("Data\v1.txt"));
        BufferedReader reader2 = new BufferedReader(new FileReader("Data\v2.txt"));
        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);
        }
        reader1.close();
        reader2.close();
    }
}

這是已修改和格式化的代碼。

import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.IOException; 

public class CompareTextFiles {
    public static void main(String[] args) throws IOException { 
        BufferedReader reader1 = new BufferedReader(new FileReader("Data\v1.txt")); 
        BufferedReader reader2 = new BufferedReader(new FileReader("Data\v2.txt")); 
        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)) { 
                System.out.println("Two files have different content at line " + lineNum); 
                System.out.println("File1 has " + line1 + " and File2 has " + line2 + " at line " + lineNum); 

            } 
            line1 = reader1.readLine(); 
            line2 = reader2.readLine(); 
            lineNum++; 
        } 

        reader1.close(); 
        reader2.close(); 
    } 
}

我所做的更改:

  1. 將if條件從循環之后移到循環內部,以便打印出不同的每一行。
  2. 更改了System.out的措辭。
  3. 刪除中斷; 從if條件,其中行不相等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM