OutputStreamWriter不会追加

时间:2014-10-13 09:22:05

标签: android text-files android-sdcard fileoutputstream

原始代码及其工作将数据保存到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();

问题是:它会覆盖文本文件而不是附加。我错过了什么?谢谢你的帮助

1 个答案:

答案 0 :(得分:17)

构造函数FileOutputStream(文件文件)始终覆盖文件。如果要附加到文件,则必须使用更通用的构造函数FileOutputStream(文件文件,布尔附加)。如果将参数'append'设置为true文件则不会被覆盖。