2015-09-04 4 views
0

Это, наверное, глупый вопрос, но я создаю функцию, которая получает данные из файла для проверки. Я пытаюсь использовать буферизованный считыватель и считыватель файлов в этой функции, хотя bufferredReader.readLine() всегда возвращает значение null. Также нет логарифма. Мне нужна помощь. Существует два метода, один из которых сохраняет файл, а другой - для получения данных из файла. Я уже знаю, что данные передаются в функцию сохранения в файл правильно.Невозможно прочитать файл на Android

Вот сохранение в файл функции:

public boolean saveToBill(Editable user, Editable points, Editable mows) { 
     String FILENAME = "/billDrafts"; 
     String string = user + "," + points + "," + mows; 
     try { 
      FileWriter writer = new FileWriter(this.getFilesDir() + FILENAME); 
      writer.write(string); 
      Toast toast = Toast.makeText(this, "Saved to checkout. Click the 3 dots, then checkout to complete billing process." + string, Toast.LENGTH_LONG); 
      toast.show(); 
      return true; 
     } catch (Exception e) { 
      Toast toast = Toast.makeText(this, "Failed to save file for checkout.", Toast.LENGTH_LONG); 
      toast.show(); 
      return false; 
     } 
    } 

Вот функция для чтения из файла:

public void checkout() { 
     String FILENAME = this.getFilesDir() + "/billDrafts"; 
     try { 
      FileReader fileReader = new FileReader(FILENAME); 
      BufferedReader bufferedReader = new BufferedReader(fileReader); 

      String bills = bufferedReader.readLine(); 

      Toast toast = Toast.makeText(this, "Checkout Complete" + bills, Toast.LENGTH_LONG); 
      toast.show(); 
      bufferedReader.close(); 
      fileReader.close(); 
     } catch (FileNotFoundException fileNotFoundException) { 
      Toast toast = Toast.makeText(this, "Checkout Failed. Make sure you have somebody to bill.", Toast.LENGTH_LONG); 
      toast.show(); 
     } catch (IOException ioException) { 
      Toast toast = Toast.makeText(this, "Checkout Failed. An unknown error occurred during checkout.", Toast.LENGTH_LONG); 
      toast.show(); 
     } 

    } 
+0

Кажется, ваш писатель не очищается, после того, как сделано с письменной форме, вам нужно вызвать 'writer.flush()' для того, чтобы очистить буфер в файл. –

ответ

0

кажется ваш saveToBill не действительно записывает данные в файл. Вам нужно либо позвонить flush(), либо close() на автору, чтобы передать буферизованные данные в фактический файл.

Поскольку вы ничего не делаете, ваш файл пуст, поэтому ваш readLine() возвращает null.

Существует небольшая разница между flush() и close(), вы можете прочитать на них

+0

Большое вам спасибо за помощь. Это было решением. StackOverflow не разрешает мне принимать в течение 2 минут, но я обещаю, что так и будет. Спасибо. –

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