2013-04-09 60 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