关于BufferedReader的mark()问题
在做作业时,为了把文件读两遍,需要让指向文件末尾的文件指针指向文件头,于是我在文件的最开始mark()了一下,mark()的长度为file.length(),当指针指到文件末后用reset()指回来,但是我发现了一个奇怪的问题,如果文件的最后一个字符是中文,则一切正常,如果文件的最后一个字符是英文,则java.io.IOException: Mark invalid,这时如果使用mark()中的长度设为file.length()+1,才正确,我百思不得其解,希望大家能给我解答。我的代码如下:
myFile = new File(filename);
fr = new FileReader(myFile);
br = new BufferedReader(fr);
br.mark((int)myFile.length());
while (null != br.readLine())
{
line++;
}
br.reset();