我打开一个内部文件并写信给他:
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”)。
如果没有,请将newLine写入文件,否则将追加 newLine写入文件。
我试过了:
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();
}
}
第一次运行它没关系 - 我得到:“文件不存在现在创建他”到Log 在第二次我得到FATAL ERROR由空指针引起。 我认为这是因为osw得到了无效
osw = new OutputStreamWriter(fOut);
但我怎样才能阻止它?
答案 0 :(得分:0)
上面的代码是错误的,我只需要重写它:
private void apendStringToInternalFile(String fileName, String newLine)
throws FileNotFoundException, UnsupportedEncodingException,
IOException {
newLine = new String(newLine + "\n");
FileOutputStream fOut = openFileOutput(fileName + ".txt",
Context.MODE_APPEND | Context.MODE_WORLD_READABLE);
// MODE_WORLD_READABLE is _deprecated_
try {
// ALWAYS SPECIFY ENCODING -
OutputStreamWriter osw = new OutputStreamWriter(fOut, "UTF-8");
BufferedWriter buffer = new BufferedWriter(osw);
buffer.write(newLine);
buffer.flush();
} finally {
try {
fOut.close();
} catch (IOException e) {
// Log this to be on the safe side -
e.printStackTrace();
}
}
}
显然整个问题都不存在。如果文件不存在,openFileOutput
将创建该文件并添加标记Context.MODE_APPEND
,如果该文件存在,它将附加。自由复制粘贴