0

我正在使用 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 位置?谢谢你的帮助

4

1 回答 1

1

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

参数:

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

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

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

于 2012-06-03T12:12:20.207 回答