2013-04-09 93 views
2

我有一个特定的方法,我想要计算一个文本文件中的行数,然后读取文件 我正在做的是通过迭代遍历文件中的行数read.nextLine(),然后重新设置缓冲区并再次从文件的开头读取。我不知道我做错了Java BufferedReader,重置阅读器

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(); 
} 
} 

基地字符串就是一个StringBuffer

private StringBuffer baseString = new StringBuffer(); 

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

+2

究竟是什么问题?什么是baseString?在哪里宣布? – giorashc 2013-04-09 18:21:31

+1

是否有一个原因,你需要先获得行数,然后阅读文件?在阅读时你不能计算行数吗? – 2013-04-09 18:22:06

+0

您需要标记流。 – Maroun 2013-04-09 18:24:17

回答

1

如前所述here文件被由BufferedReader按顺序读取,所以你不能回到文件的开始与reset BufferedReader

您必须创建新的FileReaderBufferedReader

OR

使用RandomAccessFile

1

你需要调用mark()在流。如果该流先前未被标记,则不能保证工作在Reader.reset()。特别是reset()BufferedReader执行仅记录为返回到前一个标记。

+0

不会工作..看看[这个](http://stackoverflow.com/questions/262618/java-bufferedreader-back-to-the-top-of-a-text-file) – Anirudha 2013-04-09 18:38:51