У меня есть этот фрагмент:
Log.d("iBank", "Helper: " + helper.toString());
Log.d("iBank", "File: " + file.toString());
if(helper.read(file).equals(""))
{
dataDir = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DOWNLOADS);
}
else
{
dataDir = new File( helper.read(file) );
}
Моя проблема в том, что всегда возникает исключение NullPointerException на if(helper.read(file).equals(""))
. Я сделал Log.d () для обоих объектов (как вы видите на приведенном выше коде), но он не выбрасывал это исключение. Сначала я подумал, что что-то не так на helper.read()
. Но, как вы видите ниже, я уже уловил возможную ошибку:
public String read(File file)
{
if(file == null)
return "";
String data = "";
if( !file.exists())
{
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
FileReader fr = new FileReader(file);
BufferedReader bfr = new BufferedReader(fr);
data = bfr.readLine();
} catch (Exception e) {
e.printStackTrace();
}
return data;
}
Я не уверен, что не так с моим кодом. Может быть, я что-то упускаю, но не могу понять.
UPDATE
Я фиксирую свой код на return (data == null) ? "" : data;