原始代码及其工作将数据保存到SD卡
// Writing data to internal storage
btnSaveData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isSDCardWritable()) {
String dataToSave = etData.getText().toString();
try {
// SD Card Storage
File sdCard = Environment.getExternalStorageDirectory();
File directory = new File(sdCard.getAbsolutePath()+"/MyFiles");
directory.mkdirs();
File file = new File(directory, "text.txt");
FileOutputStream fos = new FileOutputStream(file);
OutputStreamWriter osw = new OutputStreamWriter(fos);
// write the string to the file
osw.write(dataToSave);
osw.flush();
osw.close();
. . .
然后我更改了代码以根据我的需要添加新值:
osw.append(dataToSave);
osw.flush();
osw.close();
问题是:它会覆盖文本文件而不是附加。我错过了什么?谢谢你的帮助
答案 0 :(得分:17)
构造函数FileOutputStream(文件文件)始终覆盖文件。如果要附加到文件,则必须使用更通用的构造函数FileOutputStream(文件文件,布尔附加)。如果将参数'append'设置为true文件则不会被覆盖。