Maison > Java > javaDidacticiel > Comparez deux fichiers différents ligne par ligne en Java

Comparez deux fichiers différents ligne par ligne en Java

WBOY
Libérer: 2023-08-23 15:37:08
avant
1741 Les gens l'ont consulté

Dans cet article, nous comparerons deux fichiers texte différents enregistrés dans le système. Nous examinons chaque fichier texte ligne par ligne et par comparaison nous pouvons identifier les similitudes et les différences.

Voyons comment l'implémenter à l'aide du langage de programmation Java.

Montrez quelques exemples

Exemple 1

L'image ci-dessous représente deux fichiers texte différents avec le même contenu, le résultat sera donc deux fichiers avec le même contenu.

Comparez deux fichiers différents ligne par ligne en Java

Exemple 2

Ce qui suit représente deux fichiers, en supposant file1.txt et file2.txt, et leur contenu.

Fichier 1.txt

This is amazing.
Java Language.
Copier après la connexion

file2.txt

This is amazing.
Python Language.
Copier après la connexion

Ici, on peut remarquer que les deux fichiers ont un contenu différent sur la ligne 2. Puisque le fichier 1, la ligne 2 contient le "langage Java" et le fichier 2, la ligne 2 contient le "langage Python"

Algorithme

  • Étape 1 - Créez reader1 et reader2 en tant que deux objets BufferedReader et utilisez-les pour lire deux fichiers texte d'entrée ligne par ligne.

  • Étape 2 - Créez deux variables. Tout d'abord, créez une variable booléenne appelée "areEqual" et initialisez-la à true. Deuxièmement, créez une variable int appelée "lineNum" et initialisez-la à 1. areEqual est une variable d'indicateur initialement définie sur true et qui devient false lorsque le contenu des fichiers d'entrée diffère. Le nombre de lignes sera enregistré dans lineNum.

  • Étape 3 - Lisez le contenu du fichier 1 dans la ligne 1 et le contenu du fichier 2 dans la ligne 2.

  • Étape 4 - Lisez les lignes des fichiers file1 et file2 respectivement dans line1 et line2 jusqu'à ce que les deux fichiers aient été lus. Si line1 ou line2 est vide, définissez "areEqual" sur false.

  • Étape 5 - Si areEqual est vrai, déclarez que le contenu des deux fichiers est le même. Si la valeur de areEqual est fausse, le contenu des fichiers déclarés est différent.

  • Étape 6 - Fermez la ressource.

Plusieurs méthodes

Nous proposons des solutions de différentes manières.

  • En utilisant la classe BufferedReader

  • En utilisant des fichiers mappés en mémoire

Visualisez les programmes et leur sortie un par un.

Méthode 1 : utiliser la classe BufferedReader

Exemple

Dans cette méthode, vous créerez un objet de la classe BufferedReader et utiliserez la méthode readLine() intégrée pour lire le contenu de deux fichiers et les comparer.

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();
   }
}
Copier après la connexion

Sortie

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
Copier après la connexion

Remarque - Le scénario de saisie ici est similaire à l'exemple 2 expliqué ci-dessus.

Méthode 2 : Utiliser des fichiers mappés en mémoire

Exemple

Dans cette méthode, nous utiliserons le concept de fichier mappé en mémoire, qui est un objet du noyau qui mappe les octets d'un fichier disque à l'adresse mémoire du système, en manipulant le contenu du fichier mappé en mémoire, nous pouvons savoir si. le contenu est identique ou différent.

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);
      }
   }
}
Copier après la connexion

Sortie

Both files have same content
Copier après la connexion

REMARQUE - nous considérons ici deux fichiers, ils ont le même contenu.

Dans cet article, nous avons exploré comment comparer le contenu de deux fichiers texte différents ligne par ligne en Java.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal