我希望在sdcard上保存历史记录,这是在edittext上输入的。但我的代码每次调用时都会生成新的File对象。 当我在会话代码中工作,但回想起“createExternalStorageFile()”,以前的历史记录消失了,同一个文件新的历史记录。我该怎么办?
public void createExternalStorageFile() {
try {
File myFile = new File("/sdcard/" + tmp );
if ( !myFile.exists() ){
myFile.createNewFile();
} else{
FileOutputStream fOut = new FileOutputStream(myFile);
OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
myOutWriter.append(messageHistoryText.getText());
myOutWriter.close();
fOut.close();
}
} catch (IOException e) {
Log.e(TAG, "Could not write file " + e.getMessage());
}
}
答案 0 :(得分:0)
查看下面的代码,它对我有用:
public void createExternalStorageFile() {
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
String fileName = "out.txt";
File root = Environment.getExternalStorageDirectory();
File file = new File(root, fileName);
if (file.canWrite()) {
try {
boolean append = file.exists();
FileWriter outFile = new FileWriter(file, append);
PrintWriter logFileWriter = new PrintWriter(outFile);
logFileWriter.append(messageHistoryText.getText());
logFileWriter.flush();
logFileWriter.close();
outFile.close();
} catch (IOException e) {
Log.e("LOGGER", "" + e.getMessage());
return;
}
} else {
Log.e("LOGGER", "Couldn't write log file!");
}
} else {
Log.e("LOGGER", "External storage is not mounted!");
}
}