2

2 つのテキスト ファイルがあり、Java を使用してテキスト ファイルの内容を比較したいと考えています。

たとえば、最初のファイルe1.txtには内容"hello this is india"があり、別のe2.txtの内容があり"hello this is usa"ます。出力は、両方のファイルで似ていないテキストにする必要があります(ここでは、出力はインドまたはアメリカにする必要があります)。

私がここで直面していた問題は、Java IO メソッドが行ごとに読み取るため、この場合は出力が与えられず (両方の行が異なる)、空白も無視する必要があることです。誰かがこの問題で私を助けてくれれば、とても感謝しています。

これが私のコードです:

 public void fh() throws FileNotFoundException, IOException{
    File f1=new File("C:\\\\Users\\\\Ramveer\\\\Desktop\\\\idrbt Project\\\\e1.txt");
    File f2=new File("C:\\\\Users\\\\Ramveer\\\\Desktop\\\\idrbt Project\\\\e2.txt");
    FileInputStream fi1=new FileInputStream(f1);
    FileInputStream fi2=new FileInputStream(f2); 
    DataInputStream di1=new DataInputStream(fi1);
    BufferedReader br1=new BufferedReader(new InputStreamReader(di1));
    DataInputStream di2=new DataInputStream(fi2);
    BufferedReader br2=new BufferedReader(new InputStreamReader(di2));
    String s1, s2;  
    while ((s1=br1.readLine())!=null && (s2=br2.toString())!=null) 
     {
    if(!s1.equals(s2)){
    System.out.println(s1);
      }
    } 
}
4

4 に答える 4

2

それは、比較をどのように行うかによって異なります(たとえば、単語ごと、文字ごと)、つまり、与えられた

 Hello this is India

 Hello this is Indonesia

出力する必要があります:

  1. 「インド」/「インドネシア」?
  2. 「イア」対「オネシア」?

いずれの場合でも、br1.read()andbr2.read()を使用して文字ごとの比較を行うことができます (ケース 2)。または、ループを使用して各ファイルを次の区切り文字 (おそらくスペース) まで読み取り、単語を比較することもできます。

于 2013-05-27T12:15:30.367 に答える
2

StringTokenizer クラスと String.indexOf(String s) メソッドを見てください。

StringTokenizer を使用して、文字列を区切り記号で区切られたセクションに分割できます。

String.indexOf(String s) を使用して、別の String 内で特定の String を見つけることができます。

これらの組み合わせを使用して、問題を解決できる可能性があります。

于 2013-05-27T12:00:42.103 に答える
-1
import java.io.*;

public class CompareTextFiles {

    public static void main(String args[]) throws Exception {

      FileInputStream fstream1 = new FileInputStream("C:\\text1.txt");
      FileInputStream fstream2 = new FileInputStream("C:\\text2.txt");

      DataInputStream in1= new DataInputStream(fstream1);
      DataInputStream in2= new DataInputStream(fstream2);

      BufferedReader br1 = new BufferedReader(new InputStreamReader(in1));
      BufferedReader br2 = new BufferedReader(new InputStreamReader(in2));

      String strLine1, strLine2;


      while((strLine1 = br1.readLine()) != null && (strLine2 = br2.readLine()) != null){
          if(strLine1.equals(strLine2)){
              System.out.println(strLine1);

          }
      }
    }
}
于 2016-12-12T06:45:20.493 に答える