我想使用mark()
和reset()
方法读取分隔符之前的行。
String line;
FileReader fr = new FileReader(PATH);
LineNumberReader br = new LineNumberReader(fr);
String DIVIDER = "================================";
while ((line = br.readLine()) != null) {
boolean endOfObj = false;
while (!line.trim().contains(DIVIDER)) {
br.mark(line.length());
line = br.readLine(); //return next line
}
br.reset();
line = br.readLine();
但是行变量值不是前一行的分隔符。 我的问题是什么。 谢谢
答案 0 :(得分:1)
您可以尝试使用以下代码吗?我稍微整理了你的代码,并把它放到一个名为getPreviousLine()
的方法中。我感觉你被挂起了mark()
和reset()
,所以我只依靠纯逻辑和状态来找到分隔符之前的行。如果未找到分隔符,则该方法将返回null
。
String getPreviousLine(String PATH) {
String line;
FileReader fr = new FileReader(PATH);
LineNumberReader br = new LineNumberReader(fr);
String DIVIDER = "================================";
boolean endOfObj = false;
String previousLine = br.readLine();
if (previousLine == null) {
return null;
}
while ((line = br.readLine()) != null) {
if (line.trim().contains(DIVIDER)) {
endOfObj = true; // found the divider; break
break;
} else {
previousLine = line; // advance your line pointer
}
}
if (endOfObj) {
return previousLine;
} else {
return null;
}
}