仅当在SD卡中写入文件时,无法将RandomAccessFile文件用于rw模式

时间:2017-09-08 03:13:33

标签: java android randomaccessfile

以下是我的start.mp4文件的sdcard路径。我能够以读取模式获取此文件,但无法在rw模式下打开。我也给了运行时权限。它引发了一个例外:

/storage/3263-6232/piyush/Download/start.mp4: open failed: EACCES (Permission denied)

代码:

String sdCardPath = "/storage/3263-6232/piyush/Download/start.mp4"; 
File file = new File(sdCardPath );
try{

RandomAccessFile rfs = new RandomAccessFile(file, "rw");

rfs.seek(file.length());
rfs.close();

} catch (IOException e) {
   e.printStackTrace();
}

在上面的代码中,我将sdcardpath带到了sdcard中存在的文件中。 比之后,每当我尝试使用RandomAccessFile在outputstream中打开该文件时,它都会FilenotFound Exception

/storage/3263-6232/piyush/Download/start.mp4: open failed: EACCES (Permission denied)

2 个答案:

答案 0 :(得分:0)

你的Manifest看起来像这样吗? uses-permission代码必须位于应用程序代码

之外

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

PS:如果您正在使用Post M设备进行测试,请确保在对您提交任何操作之前询问WRITE_EXTERNAL_STORAGE权限。

答案 1 :(得分:0)

将您的存储位置更改为/ storage / 3263-6232 / Android / data / <Your package Name> / files将解决您的问题

Above Path仅对相关的第三方应用程序具有写入权限,在其他地方您可以读取该文件但无法写入新文件。

或者您需要应用Storage Access Framework来获取写入权限。

有关详细信息,请访问 https://developer.android.com/guide/topics/providers/document-provider.html