在Java中逐行比較兩個不同的文件
在本文中,我們將比較系統中儲存的兩個不同的文字檔案。我們會逐行檢查每個文字文件,透過比較我們可以找出異同。
讓我們來看看如何使用Java程式語言來實作它。
向您展示一些實例
實例1
下圖描繪了兩個具有相同內容的不同文字文件,因此輸出將是兩個具有相同內容的文件。
實例2
下面表示兩個文件,假設是file1.txt和file2.txt,以及它們的內容。
檔1.txt
#This is amazing. Java Language.
file2.txt
#This is amazing. Python Language.
在這裡,我們可以注意到兩個檔案在第 2 行有不同的內容。由於檔案 1,第 2 行包含“Java 語言”,檔案 2,第 2 行包含“Python 語言”
演算法
步驟 1 − 建立reader1和reader2作為兩個BufferedReader對象,並使用它們逐行讀取兩個輸入文字檔案。
第 2 步 - 建立兩個變數。首先,建立一個名為「areEqual」的布林變數並將其初始化為 true。其次,建立一個名為「lineNum」的 int 變數並將其初始化為 1。 areEqual 是一個標誌變量,最初設定為 true,當輸入檔案的內容不同時更改為 false。行數將保存在 lineNum 中。
步驟 3 - 將檔案 1 的內容讀入第 1 行,將檔案 2 的內容讀入第 2 行。
第四步 - 將檔案file1和file2中的行分別讀入line1和line2,直到兩個檔案都被讀取完畢。如果line1或line2為空,則將"areEqual"設為false。
步驟 5 − 如果 areEqual 為真,則宣告兩個檔案的內容相同。如果 areEqual 的值為假,則聲明文件的內容不同。
第 6 步 - 關閉資源。
多種方法
我們透過不同的方式提供了解決方案。
透過使用 BufferedReader 類別
透過使用記憶體映射檔案
#逐一查看程式及其輸出。
方法 1:使用 BufferedReader 類別
範例
在這個方法中,您將建立BufferedReader類別的對象,並使用內建的readLine()方法讀取兩個檔案的內容並進行比較。
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class Main{ public static void main(String[] args) throws IOException{ BufferedReader reader1 = new BufferedReader(new FileReader("E:\file1.txt")); BufferedReader reader2 = new BufferedReader(new FileReader("E:\file2.txt")); String line1 = reader1.readLine(); String line2 = reader2.readLine(); int lineNum = 1; boolean areEqual = true; 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("Both the files have same content"); } else { System.out.println("Both the files have different content"); System.out.println("In both files, there is a difference at line number: "+lineNum); System.out.println("One file has "+line1+" and another file has "+line2+" at line "+lineNum); } reader1.close(); reader2.close(); } }
輸出
Both the files have different content In both files, there is a difference at line number: 2 One file has Java Language. and another file has Python Language. at line 2
注意 - 這裡的輸入場景類似上面解釋的實例2。
方法 2:使用記憶體映射檔案
範例
在這種方法中,我們將利用記憶體映射檔案的概念,這是一個將磁碟檔案的位元組映射到系統記憶體位址的內核對象,透過操作記憶體映射檔案的內容,我們可以知道內容是相同還是不同。
import java.io.File; import java.nio.file.Path; import java.nio.file.Paths; import java.io.IOException; import java.io.RandomAccessFile; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; public class Main { public static void main(String[] args) { Path path1 = Paths.get("E://file1.txt"); Path path2 = Paths.get("E://file2.txt"); compare(path1,path2); } public static void compare(Path path1, Path path2) { try { RandomAccessFile randomAccessFile1 = new RandomAccessFile(path1.toFile(), "r"); RandomAccessFile randomAccessFile2 = new RandomAccessFile(path2.toFile(), "r"); FileChannel ch1 = randomAccessFile1.getChannel(); FileChannel ch2 = randomAccessFile2.getChannel(); if (ch1.size() != ch2.size()) { System.out.println("Both files have different content"); } long size = ch1.size(); MappedByteBuffer m1 = ch1.map(FileChannel.MapMode.READ_ONLY, 0L, size); MappedByteBuffer m2 = ch2.map(FileChannel.MapMode.READ_ONLY, 0L, size); if (m1.equals(m2)) { System.out.println("Both files have same content"); } } catch(Exception e){ System.out.println(e); } } }
輸出
Both files have same content
注意 - 這裡我們考慮過的兩個文件,它們有相同的內容。
在本文中,我們探討如何在 Java 中逐行比較兩個不同文字檔案的內容。
以上是在Java中逐行比較兩個不同的文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Java 8引入了Stream API,提供了一種強大且表達力豐富的處理數據集合的方式。然而,使用Stream時,一個常見問題是:如何從forEach操作中中斷或返回? 傳統循環允許提前中斷或返回,但Stream的forEach方法並不直接支持這種方式。本文將解釋原因,並探討在Stream處理系統中實現提前終止的替代方法。 延伸閱讀: Java Stream API改進 理解Stream forEach forEach方法是一個終端操作,它對Stream中的每個元素執行一個操作。它的設計意圖是處

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP和Python各有優勢,適合不同場景。 1.PHP適用於web開發,提供內置web服務器和豐富函數庫。 2.Python適合數據科學和機器學習,語法簡潔且有強大標準庫。選擇時應根據項目需求決定。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP成為許多網站首選技術棧的原因包括其易用性、強大社區支持和廣泛應用。 1)易於學習和使用,適合初學者。 2)擁有龐大的開發者社區,資源豐富。 3)廣泛應用於WordPress、Drupal等平台。 4)與Web服務器緊密集成,簡化開發部署。

PHP適用於Web開發和內容管理系統,Python適合數據科學、機器學習和自動化腳本。 1.PHP在構建快速、可擴展的網站和應用程序方面表現出色,常用於WordPress等CMS。 2.Python在數據科學和機器學習領域表現卓越,擁有豐富的庫如NumPy和TensorFlow。
