标记&在java BufferedReader中重置

时间:2015-03-02 08:18:42

标签: java bufferedreader

我想使用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();

但是行变量值不是前一行的分隔符。 我的问题是什么。 谢谢

1 个答案:

答案 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;
    }
}