2015-09-07 1 views
1

Я не понимаю, как очистить BufferedReader. Когда я нажимаю кнопку в Activity, переменная устанавливается в 1 или 2. Зависит от файла смены номеров в BufferedReader. Когда я нажимаю второй раз в буфере, будет два файла. Как сообщить BR о сбросе буфера до того, как будет загружена вторая. И наоборот, конечно.Как очистить BufferedReader, если он не пуст [Java/Android]

public List<String> getQuestionLinesList() { 

      String line; 
      List<String> lines = new ArrayList<String>(); 
      Log.d(TAG, " Trying to get resourses"); 
      Resources res = context.getResources(); 


      try { 

        if (selectedBox == 1) { 

         bufferedQuestions = new BufferedReader(new InputStreamReader(res.openRawResource(R.raw.questions_list))); 

        } else if (selectedBox == 2) { 

         bufferedQuestions = new BufferedReader(new InputStreamReader(res.openRawResource(R.raw.questions_list_art))); 

        } 


       Log.d(TAG, "number i = " + Integer.toString(selectedBox)); 

       while ((line = bufferedQuestions.readLine()) != null) { 
        lines.add(line); 
        Log.d(LINETAG, line); 
       } 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

      return lines; 
     } 

ответ

0

Добавить каретка/\ п в конце файлов, то ReadLine() должны быть в состоянии очистить BufferedReader.

JavaDocs for BufferedRead, который утверждает

public String readLine() 
    throws IOException 

Считывает строку текста. Линия считается завершенной любым из строк ('\ n'), возвратом каретки ('\ r') или возвратом каретки, за которым следует сразу строка.

Возвращает: Строка, содержащая содержимое строки, не включая линии прекращения символов, или ноль, если конец потока достигнут

+0

BufferedReader будет очищен, прежде чем я смогу его использовать – bronnikov

0

Может быть, вы можете попробовать использовать локальную переменную ваш метод BufferedReader не «bufferedQuestions», который вы, вероятно, объявили как поле в классе, где этот метод: «getQuestionLinesList».