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

+1

Есть ли причина, по которой вам нужно сначала получить количество строк, а затем прочитать файл? Не можете ли вы подсчитать количество строк при чтении? –

+0

Вам нужно отметить поток. – Maroun

ответ

1

Как уже упоминалось hereфайл является читайте последовательно по BufferedReader, поэтому вы не можете вернуться к началу файла с reset из BufferedReader

Вы должны создать новый FileReader и BufferedReader

ИЛИ

RandomAccessFile Используйте

1

Вы должны вызвать mark() на поток. Reader.reset() не гарантируется, если поток ранее не был отмечен. Реализация BufferedReaderreset(), в частности, документируется только как возвращаемая к предыдущей отметке.

+0

это не сработает. Посмотрите на [это] (http://stackoverflow.com/questions/262618/java-bufferedreader-back-to-the-top-of-a-text-file) – Anirudha

Смежные вопросы