Java BufferedReader,重置阅读器

时间:2013-04-09 18:18:37

标签: java

我有一个特殊的方法,我想计算文本文件中的行数,然后读取文件 我正在做的是通过迭代read.nextLine()然后重置缓冲区并再次从文件的开头读取来计算文件中的行数。我不确定我做错了什么

public void ReadFile() throws IOException{
 try{
    FileReader fr = new FileReader(path);
    BufferedReader read = new BufferedReader(fr);
    int numberOfLines=0;
    while(read.readLine()!= null)
    {
        numberOfLines++;  // Getting the number of lines


    }

    read.reset();
    System.out.println(numberOfLines + ": is the no of lines");
    baseString.append(read.readLine());
    baseString.append(read.readLine());
    baseString.append(read.readLine());
    System.out.println(baseString);
 }
 catch(IOException e){
        e.printStackTrace();
 }
}

base string只是一个Stringbuffer

private StringBuffer baseString = new StringBuffer();

我明确需要计数来执行一些操作

2 个答案:

答案 0 :(得分:1)

如上所述[{3}},文件BufferedReader顺序读取,因此您无法返回reset的文件开头的BufferedReader

您必须创建新的FileReaderBufferedReader

OR

使用here

答案 1 :(得分:1)

您需要在流上调用mark()。如果之前未标记过流,则无法保证Reader.reset()有效。 BufferedReader的{​​{1}}实现特别记录为返回上一个标记。