繁体   English   中英

用Java比较具有特定结构的文件

[英]Comparing files with a specific structure in java

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

@RELATION Table

@RECORD 1
ID '5'
SOMETHING '10'

关键是,一个文件中可以有10个“空”行,而第二个文件中可以没有空行,如果数据相等,那就没关系了。 有什么想法可以有效地处理大文件吗?

应该使用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或具有非空String的值。

如果两者都为null,则比较完成,两个文件相等,并且可以从函数返回true。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM