2013-05-27 55 views
2

比較兩個文本文件的字符串我有兩個文本文件,我想比較的用java文本文件的內容。通過字符串中的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); 
     } 
    } 
} 
+0

請格式化您的代碼:) – vikingsteve

+0

字順序是否重要?我的意思是它應該返回相同的結果來比較「你好,這是印度」,「你好,這是美國」和「你好印度這是」,「你好,這是美國」? –

+0

你應該學習如何調試。插入一個斷點並逐行瀏覽。觀察你的變量,看看他們有什麼價值。你會發現你的問題,並能夠儘快解決它。 – Joetjah

回答

2

看看StringTokenizer類和String.indexOf(String s)已方法。

可以使用的StringTokenizer來分手的String段,分隔符隔開。

您可以使用String.indexOf(String s)將找到另一個字符串中的特定字符串。

可以使用這些方法的組合可能解決您的問題。

3

正如我所評論的,使用java.util.Scanner

public static void fha(InputStream is1, InputStream is2) throws IOException { 
    Scanner sc1 = new Scanner(is1); 
    Scanner sc2 = new Scanner(is2); 
    while (sc1.hasNext() && sc2.hasNext()) { 
     String str1 = sc1.next(); 
     String str2 = sc2.next(); 
     if (!str1.equals(str2)) 
      System.out.println(str1 + " != " + str2); 
    } 
    while (sc1.hasNext()) 
     System.out.println(sc1.next() + " != EOF"); 
    while (sc2.hasNext()) 
     System.out.println("EOF != " + sc2.next()); 
    sc1.close(); 
    sc2.close(); 
} 
2

這要看你怎麼想的比較去(例如,一字一句,通過炭炭),即給定

​​

Hello this is Indonesia 

應該輸出:

  1. 「印度」/ 「印尼」?
  2. 「ia」與「onesia」?

在任何情況下,您都可以使用br1.read()br2.read()來逐字符比較(情況2)。或者你可以使用循環讀取每個文件,直到下一個分隔符(可能是空格),然後比較這些單詞。

+0

比較是一個字一個字。這些都是簡單的行,我們可以使用循環直到下一個空格,但是如果我在文本文件中有很多行,並且你會如何確定單詞的數量,那麼還有什麼結果呢? – JohnH

+0

行結束也可以看作是詞的結尾(這很常見)。直到字符爲''或'\ n'或'\ r'爲止,在每個文件上執行此操作,然後輸出不同的單詞。 –

-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); 

      } 
     } 
    } 
}