在java中逐字符串比较两个文本文件

时间:2013-05-27 11:50:05

标签: java

我有两个文本文件,我想用java比较文本文件的内容。

例如,第一个文件 e1.txt 包含内容"hello this is india",另一个 e2.txt 内容"hello this is usa"。我希望输出应该是两个文件中不是similer的文本(这里输出应该是india或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 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:2)

查看StringTokenizer类和String.indexOf(String s)方法。

您可以使用StringTokenizer将String拆分为由分隔符分隔的部分。

您可以使用String.indexOf(String s)在另一个String中查找特定的String。

您可以使用这些组合来解决您的问题。

答案 2 :(得分:2)

这取决于你想要比较的方式(例如逐字逐句,char字符),即给定

 Hello this is India

 Hello this is Indonesia

应输出:

  1. “印”/ “印尼”?
  2. “ia”与“onesia”?
  3. 在任何情况下,您都可以使用br1.read()br2.read()进行逐字符比较(案例2)。或者您可以使用循环来读取每个文件,直到下一个分隔符(可能是空格),然后比较单词。

答案 3 :(得分:-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);

          }
      }
    }
}