2013-05-27 57 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); 

      } 
     } 
    } 
}