即使fileOutputStream附加模式设置为TRUE,Android也会将文本附加到文件中

时间:2017-08-10 10:17:06

标签: android file append storage

我正在尝试将文本附加到存储在模拟/ 0 /..文件夹(不带SD卡的外部存储设备)中的文件中

FileOutputStream fileOutputStream = new FileOutputStream(capturesFile, true);
OutputStreamWriter writer = new OutputStreamWriter(fileOutputStream);
String data = "my data";
writer.append(data);
writer.close();
fileOutputStream.flush();
fileOutputStream.close();

这段代码不能正常工作,我真的不明白为什么。模拟位置是一个问题(愚蠢的问题,但此时......)我已经尝试了许多方法,没有任何积极的解决方案。

是否有人对此问题有所了解。

2 个答案:

答案 0 :(得分:1)

使用此代码

    try {
        FileWriter fw = new FileWriter("path/of/file",true);
        fw.write("myData");
        fw.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

答案 1 :(得分:0)

  1. 首先确保您已获得编写文件所需的权限,即< - p>

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    
  2. 清单文件中的

       if (ContextCompat.checkSelfPermission(context,
                android.Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
            ActivityCompat.requestPermissions(MainActivity.this,
                    new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE_EXT_STORAGE);
        }
    

    在您的活动中。

    1. 第二,请检查您的目录路径。您可能有一些机会使用错误的路径。获取内部存储的直接路径的最简单方法是 -

      String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Android/data" + getApplicationContext().getPackageName();
      File file = new File(path + "/File.txt");
      
    2. 您可以根据您的要求使用此方法来编写文件 -

      try {
          OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(file));
          outputStreamWriter.append("My Data");
          outputStreamWriter.flush();
          outputStreamWriter.close();
      } catch (IOException e) {
          e.printStackTrace();
      }