Java porównywanie plików

0
package javaapplication6;
 
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
 
public class Diff {
 
    public static void main(String[] args) throws IOException  
    {
 
        String plik1 = "E:\\plik1.txt";
        String plik2 = "E:\\plik2.txt";
         odczyt(plik1, plik2);
    }
 
    @SuppressWarnings({"null", "SuspiciousIndentAfterControlStatement", "RedundantStringToString"})
    static void odczyt(String plik1, String plik2) throws IOException 
    {
 
            BufferedReader plikwe1 = null;
            BufferedReader plikwe2 = null;
            FileWriter plik3 = null;
       
            plikwe1 = new BufferedReader(new FileReader(plik1));
            plikwe2 = new BufferedReader(new FileReader(plik2));
            plik3 = new FileWriter("E:\\plik03.txt");
           
          
            
 
            String linia1;
            String linia2;
            plik1 = "";
            plik2 = "";
            
            int numerLinii = 1;
            while (((linia1 = plikwe1.readLine()) != null) && ((linia2 = plikwe2.readLine()) != null)){
            if (!linia1.equals(linia2))
            {
               
                numerLinii++;
            System.out.println("Linie " + numerLinii + " są różne");
                }
             else 
            {
                
                System.out.println("Linie " + numerLinii + " są takie same");
                
            }
            
           
           
             int liniap1 = 1;
            int liniap2 = 1;
            
            while ((plikwe1.readLine()) != null) 
            {
                liniap1++;
            }
            while ((plikwe2.readLine()) != null) 
            {
                liniap2++;
            }
            System.out.println("Plik pierwszy ma " + liniap1 + ", a plik drugi ma " + liniap2 + " linii. ");
            
            

 
 
 
          plik3.write("Linie " + numerLinii + " są różne");
            
 
 
 
                 
            }
 
 
 
         {
            if (plikwe1 != null) 
            {
                plikwe1.close();
            }
            if (plikwe2 != null) 
            {
                
                plikwe2.close();
            }
            if (plik3 != null)
            {
                plik3.close();
                System.out.println("Udało się zapisać plik");
            }
        }
    }
 }

Mam takie pytanko a mianowicie co zrobic zeby porównywalo mi linie 1 z pliku 1 z linia2 z pliku 2 i wyswietlalo ze sa rózne. Teraz program działa poprawnie bo wyswietla liczbe ort! które się róznia ja natomiast chce zeby sprawdzal linie po linii i wyswietlal ze sa rozne. Prosze o pomoc

0

A to nie działa? Co prawda jeśli plik1 ma 3 linie a drugi 2 linie to nie wyświetli, że trzecia linia jest inna no ale działa. Możesz też zamykać readery w bloku finally.

Mały błąd w wyświetlaniu numeru linii. Albo zaczynaj od 0 albo przenieś na koniec pętli inkrementowanie.

0

CHODZI mi o to zeby program porównal każda linie ze soba i dał wynik np
1 linia taka sama
2 linia rozna
3 linia taka sama.

W tym momencie program pokazuje np:
2 linie sa rózne od siebie

0

Jak sformatujesz po ludzku kod, to sam zobaczysz, że pętla whilezaczynająca się od

while (((linia1 = plikwe1.readLine()) != null) && ((linia2 = plikwe2.readLine()) != null)){

jest bezsensowna.

1 użytkowników online, w tym zalogowanych: 0, gości: 1