Android中的java.io.FileNotFoundException访问被拒绝
我试图将输出文件存储在内存中,但它抛出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
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?)