2

我有一个特殊的方法,我想计算文本文件中的行数,然后读取文件我正在做的是通过迭代 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();
 }
}

基本字符串只是一个字符串缓冲区

private StringBuffer baseString = new StringBuffer();

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

4

2 回答 2

2

正如这里提到的,文件是按顺序读取的BufferedReader,所以你不能用resetBufferedReader回到文件的开头

你必须创造新的FileReaderBufferedReader

或者

使用RandomAccessFile

于 2013-04-09T18:24:29.803 回答
1

您需要mark()在流上调用。Reader.reset()如果流之前没有被标记,则不能保证工作。特别是的BufferedReader实施reset()仅记录为返回到先前的标记。

于 2013-04-09T18:29:29.023 回答