Открываю внутренний файл и пишу ему так:
final String NEWLINE = new String(newLine+"\n");
FileOutputStream fOut = openFileOutput(fileName+".txt",MODE_WORLD_READABLE);
OutputStreamWriter osw = new OutputStreamWriter(fOut);
osw.write(NEWLINE);
Мне нужен способ проверить, существует ли внутренний файл (fileName+".txt").
Если нет, запишите новую строку в файл, иначе добавьте новую строку в файл.
Я попытался:
File file = getBaseContext().getFileStreamPath(fileName+".txt");
if(file.exists())...
Но я не знаю внутреннего пути к файлу, и он не работает.
Какие-либо предложения?
Подробнее:
private void writeStringToFile(String fileName, String newLine) {
final String NEWLINE = new String(newLine + "\n");
FileOutputStream fOut = null;
OutputStreamWriter osw = null;
try { // catches IOException below
File file = getFileStreamPath(fileName + ".txt");
if (!file.exists()) {
Log.d("DAVID", "File not exist now create him");
fOut = openFileOutput(fileName + ".txt", MODE_WORLD_READABLE);
osw = new OutputStreamWriter(fOut);
} else {
Log.d("DAVID", "File already exist");
osw = new OutputStreamWriter(fOut);
}
// Write the string to the file
osw.append(NEWLINE);
// osw.write(NEWLINE);
// ensure that everything is really written out and close
osw.flush();
osw.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
В первый раз все в порядке - я получаю: «Файл не существует, теперь создайте его» для входа во второй раз, когда я получаю FATAL ERROR из-за нулевого указателя. Я думаю, это потому, что osw получает null fOut
osw = new OutputStreamWriter(fOut);
Но как я могу предотвратить это?
getFileStreamPath()
должно работать нормально, хотя я бы не стал использоватьgetBaseContext()
— просто вызовитеgetFileStreamPath()
на существующемContext
. Или используйтеgetFilesDir()
, чтобы получить объектFile
, кудаopenFileOutput()
записывает свои файлы. - person CommonsWare   schedule 11.12.2011if (list.contains(filename))
. - person Phil   schedule 11.12.2011