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

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();
}
于 2013-05-27T12:12:24.240 回答
2

这取决于您希望比较的方式(例如逐字,逐字符),即给定

 Hello this is India

 Hello this is Indonesia

它应该输出:

  1. “印度”/“印度尼西亚”?
  2. “ia”与“onesia”?

在任何情况下,您都可以使用br1.read()andbr2.read()进行逐个字符的比较(案例 2)。或者您可以使用循环读取每个文件,直到下一个分隔符(可能是空格),然后比较单词。

于 2013-05-27T12:15:30.367 回答
2

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

您可以使用 StringTokenizer 将字符串分解为由分隔符分隔的部分。

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

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

于 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 回答