У меня есть файл, хранящийся локально на моем устройстве, который я читаю отлично, если я не перезагружаю телефон. Когда я перезагружаюсь и читаю журналы, новый 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) {
}
Я думаю, что есть некоторые синтаксические ошибки в коде, который вы отправили; пожалуйста, исправьте – Aify
... не была ошибкой btw, это дополнительная закрывающая скобка за уловкой – Aify
Является ли это временным файлом, который удаляется при перезагрузке устройства? Это файл на SD-карте, который временно недоступен после перезагрузки, потому что работает медиа-сканер? – samgak