我有两个文本文件,我想用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);
}
}
}
答案 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
应输出:
在任何情况下,您都可以使用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);
}
}
}
}