Java 读取文件,直到行具有特定值

Java 读取文件,直到行具有特定值,java,Java,我有一个具有以下模式的csv文件: HEADER1 entry1 entry2 HEADER2 entry3 entry4 ... 标题将不同对象的条目分开。我创建了一个BufferedReader和两个while循环,我想迭代第一个while循环,直到下一行的值等于HEADER2的值(然后我想退出这个迭代并开始下一个迭代并创建不同的对象)。我的问题是写这种情况: while ( !"MEETING_ROOMS".equals(line = reader.readLine())) || ((l

我有一个具有以下模式的csv文件:

HEADER1
entry1
entry2
HEADER2
entry3
entry4
...
标题将不同对象的条目分开。我创建了一个BufferedReader和两个while循环,我想迭代第一个while循环,直到下一行的值等于HEADER2的值(然后我想退出这个迭代并开始下一个迭代并创建不同的对象)。我的问题是写这种情况:

while ( !"MEETING_ROOMS".equals(line = reader.readLine())) || ((line = reader.readLine()) != null) {

这将返回一个“表达式的非法开始”错误。

当循环关闭时,
的逻辑将被禁用。请尝试以下版本:

while ((line = reader.readLine()) != null && !"MEETING_ROOMS".equals(line)) {
    // process line
}
while
循环中的条件首先尝试读取一行。如果该行不为
null
,则应用附加检查以确保该行不是
会议室


您还遇到了括号不平衡的问题,但在我的版本中,这个问题消失了。

while
循环的逻辑已关闭。请尝试以下版本:

while ((line = reader.readLine()) != null && !"MEETING_ROOMS".equals(line)) {
    // process line
}
while
循环中的条件首先尝试读取一行。如果该行不为
null
,则应用附加检查以确保该行不是
会议室


您还遇到了括号不平衡的问题,但在我的版本中,这一问题消失了。

该代码中的括号不正确,
.equals(line=reader.readLine())
应该是
。equals(line=reader.readLine())
while的完整条件必须封装在括号中。与while(条件1)| |(条件2)不同,while(条件1 | |条件2)中的括号不正确,
.equals(line=reader.readLine())
应该是
。equals(line=reader.readLine())
while的完整条件必须封装在括号中。而不是while(条件1)| |(条件2)它应该是while(条件1 | |条件2)