2015-01-16 2 views
-1

У меня есть файл, хранящийся локально на моем устройстве, который я читаю отлично, если я не перезагружаю телефон. Когда я перезагружаюсь и читаю журналы, новый FileReader выдает NPE; Зачем?FileReader, производящий NPE

BufferedReader br = null; 
FileReader fr = null; 
    try { 
     Log.d("DEBUG", "Before filereader"); 
     fr = new FileReader(ABS_FILENAME); 
     Log.d("DEBUG", "Before BufferedReader"); 
     br = new BufferedReader(fr); 

     String current; 

     Log.d("DEBUG", "About to read file"); 
     while((current = br.readLine()) != null) { 

     } 
    } 
    } catch (Exception e) { 
     Log.d("DEBUG", "Exception thrown: " + e.getMessage()); 
    } finally { 
     try { 
      if (fr != null) { 
       fr.close(); 
      } 
     } catch (IOException ex) { 
      Log.d("DEBUG", "Problem closing file reader"); 
     } 
    } 
    return null; 

Приведенный выше код происходит в широковещательном приемнике. ABS_FILENAME - это строка, обозначающая файл. Этот файл записывается периодически в операцию один раз что-то щелкнул:

// in an onClick that gets invoked 
try { 
      String line = myKey + " " + myValue; 
      fw.write(line); 
      fw.write(System.getProperty("line.separator")); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       if(fw != null) 
        fw.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 

// elsewhere in the activity 
@Override protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_my); 

    myFile = new File(getFilesDir(), FILENAME); 
    try { 
     if (!myFile.exists()) { 
      myFile.createNewFile(); 
     } 
     ABS_FILENAME = myFile.getAbsolutePath(); 
     fw = new FileWriter(myFile.getAbsoluteFile(), true); 
    } catch(IOException e) { 
    } 
+0

Я думаю, что есть некоторые синтаксические ошибки в коде, который вы отправили; пожалуйста, исправьте – Aify

+0

... не была ошибкой btw, это дополнительная закрывающая скобка за уловкой – Aify

+0

Является ли это временным файлом, который удаляется при перезагрузке устройства? Это файл на SD-карте, который временно недоступен после перезагрузки, потому что работает медиа-сканер? – samgak

ответ

0

Если

new FileReader(ABS_FILENAME) 

действительно производит NullPointerException, явно ABS_FILENAME должен быть пустым.

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