Android中的java.io.FileNotFoundException访问被拒绝

Android中的java.io.FileNotFoundException访问被拒绝,android,java-io,Android,Java Io,我试图将输出文件存储在内存中,但它抛出java.io.FileNotFoundException访问被拒绝 private boolean crop() { try { FileOutputStream fos = null; String filePath = CustomVideoGalleryActivity.videoPath.get(0); Movie originalMovie = MovieCreator.build(filePa

我试图将输出文件存储在内存中,但它抛出java.io.FileNotFoundException访问被拒绝

private boolean crop() {
    try {
        FileOutputStream fos = null;
        String filePath = CustomVideoGalleryActivity.videoPath.get(0);
      Movie originalMovie = MovieCreator.build(filePath);

      Track track = originalMovie.getTracks().get(0);
      Movie movie = new Movie();
      movie.addTrack(new AppendTrack(new CroppedTrack(track, 200, 800)));

      Container out = new DefaultMp4Builder().build(movie);
      String outputFilePath = Environment.getDataDirectory()+ "/output_crop.mp4";
      fos = new FileOutputStream(new File(outputFilePath)); //throws Exception
      out.writeContainer(fos.getChannel());
      fos.close();
      mProgressDialog.dismiss();
      finish();

    } catch (Exception e) {
        Log.v("ONMESSAGE", e.toString());
      e.printStackTrace();
      mProgressDialog.dismiss();
      return false;
    }
    return true;
  }
您需要在您的
AndroidManifest.xml
中添加。特别是,必须显示以下行:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

您不应该查看数据目录。这是手机存储器中的一个系统目录,通常是/data,您的应用程序永远不会有写入权限

应用程序应该将文件写入的目录由Context.getFilesDir()方法返回。它类似于/data/data/com.yourdomain.YourApp/files

如果要写入手机存储器中的文件,请使用Context.openFileOutput()方法

如果需要SD卡的路径,请使用Environment.getExternalStorageDirectory()方法。要写入SD卡,您需要通过将以下内容添加到清单中,为应用程序授予相应的权限:

如果要写入SD卡,还需要使用getExternalStorageState()方法检查SD卡的状态

如果要存储与应用程序相关的小文件,则这些文件可以进入手机存储器,而不是SD卡,因此请使用Context.openFileOutput()和Context.openFileInput()方法

<>在你的代码中考虑一些类似的事情:

OutputStream os = openFileOutput("samplefile.txt", MODE_PRIVATE);
BufferedWriter lout = new BufferedWriter(new OutputStreamWriter(os));

先生,我想将其存储在设备的内部存储器中。我已经在清单文件中添加了android.permission.WRITE\u EXTERNAL\u存储权限。但这不起作用,是我的错。无法写入
/data
。不,先生。几天前,我已经检查了我的程序。它工作正常。它将我的输出文件存储到我设备的内部内存中。但现在它在我的日志中显示异常。从那时起,您是否更新了设备?(从3.x到4.x?)