在java中比较具有特定结构的文件

时间:2016-07-04 09:24:44

标签: java file io

我有两个具有特定结构的txt文件。应该有一些带有一些数据的空行和行。像这样:

@RELATION Table

@RECORD 1
ID '5'
SOMETHING '10'

关键是,可以有10个空的'一个文件中的行,并且在第二个文件中没有,如果数据等于,则无关紧要。任何想法如何有效地使用大文件?

1 个答案:

答案 0 :(得分:0)

BufferedReader应该用于从文件中读取,为其构造函数提供FileReader: https://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html

所以你将有两个,每个文件一个。

有一个"无限循环"例如:while(true){}

在这个容器循环中,你应该有两个内部循环,每个循环一个。

在每个内部循环中,使用readLine()方法,你应该将光标前进到下一行。

在容器循环之外声明这个:

String lineFromFileA, lineFromFileB;

然后:

while((lineFromFileA = bufferedReaderA.readLine()) != null){
    if(!lineFromFileA.isEmpty())
        break;
}

使用lineFromLineB执行相同操作。

上述循环的替代方案是:

while((lineFromFileA = bufferedReaderA.readLine()) != null && lineFromFileA.isEmpty());

在两个内部循环之后,lineFromFileA和lineFromFileB都是null或者是一个非空字符串的值。

如果两者都为null,那么你完成了比较,两个文件相等,你可以从函数返回true。

如果一个包含null而另一个不包含,则返回false。文件不同。

如果两者都不为null,则检查equals()方法,如果两个字符串相同,如果不相同,则从函数返回false。如果它们相等,则不执行任何操作,容器循环的下一次迭代将处理下一行。