如何重置BufferedReader的位置?

时间:2012-06-03 12:00:18

标签: java android bufferedreader

我使用BufferedReader从文件中读取行。当我从文件中读取所有行我想从头开始重新读取文件时,我该怎么办? BufferedReader.mark()BufferedReader.reset()无效。这是我的代码

FileReader fR = new FileReader(this.sTargetPath);
            final BufferedReader vcfBuffer = new BufferedReader(fR);
        //  vcfBuffer.mark(0);
                Boolean nextLine = true;
                while (nextLine) {
                    try {
                        String line = vcfBuffer.readLine();
                        }
                    } catch (IOException e) {
                        nextLine = false;
                    }
                }
            }

            vcfBuffer.reset();

如何重置BufferedREader位置?谢谢你的帮助

1 个答案:

答案 0 :(得分:1)

javadoc of mark()说:(强调我的):

  

参数:

     

readAheadLimit - 限制在保留标记的同时可以读取的字符数。尝试重置流   在阅读达到此限制或更高限度的字符后,可能会失败。限制   大于输入缓冲区大小的值将导致新的缓冲区   被分配的大小不小于限制。因此大   值得谨慎使用。

如果以0作为参数调用它,只要再从读取器读取一个字节,就可能无法重置。

解决方案是使用文件的长度作为参数调用mark方法。但是,当然,这将导致在内存缓冲区中读取整个文件。如果您不想要,请关闭阅读器并重新打开新的BufferedReader。