java - 打开失败 : EACCES (Permission denied) on SD card

标签 java android sd-card filewriter

我无法对 SD 卡上的文件使用 FileWriter 我在 list 中有以下权限

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

我正在使用下面的代码

File selected = new File("/storage/extSdCard/", "00 - Copy.txt");
FileWriter fw;
try {
    fw = new FileWriter(selected, false);
    fw.write(content);
    fw.close();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

我在 logcat 中得到以下内容,知道/storage/extSdCard/00 - Copy.txt 存在。

07-14 14:50:48.722  18216-19903/tk.hasankassem.supererase W/System.err﹕ java.io.FileNotFoundException: /storage/extSdCard/00 - Copy.txt: open failed: EACCES (Permission denied)
07-14 14:50:48.722  18216-19903/tk.hasankassem.supererase W/System.err﹕ at libcore.io.IoBridge.open(IoBridge.java:456)
07-14 14:50:48.722  18216-19903/tk.hasankassem.supererase W/System.err﹕ at java.io.FileOutputStream.<init>(FileOutputStream.java:87)
07-14 14:50:48.722  18216-19903/tk.hasankassem.supererase W/System.err﹕ at java.io.FileOutputStream.<init>(FileOutputStream.java:127)
07-14 14:50:48.722  18216-19903/tk.hasankassem.supererase W/System.err﹕ at java.io.FileWriter.<init>(FileWriter.java:96)
07-14 14:50:48.722  18216-19903/tk.hasankassem.supererase W/System.err﹕ at tk.hasankassem.supererase.MainActivity$5.run(MainActivity.java:302)
07-14 14:50:48.722  18216-19903/tk.hasankassem.supererase W/System.err﹕ Caused by: android.system.ErrnoException: open failed: EACCES (Permission denied)
07-14 14:50:48.722  18216-19903/tk.hasankassem.supererase W/System.err﹕ at libcore.io.Posix.open(Native Method)
07-14 14:50:48.722  18216-19903/tk.hasankassem.supererase W/System.err﹕ at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
07-14 14:50:48.722  18216-19903/tk.hasankassem.supererase W/System.err﹕ at libcore.io.IoBridge.open(IoBridge.java:442)
07-14 14:50:48.722  18216-19903/tk.hasankassem.supererase W/System.err﹕ ... 4 more

我试过使用 Environment.getExternalStorageDirectory(),但它也不起作用。

更新 当我使用 Environment.getExternalStorageDirectory() 时,它会写入内部存储而不是 SD 卡。

最佳答案

以下权限应在 <application> 之外定义标签。

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

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

关于java - 打开失败 : EACCES (Permission denied) on SD card,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31405915/

相关文章:

Java比较带哈希和不带哈希的字符串

java - Spring Boot事务管理器建议回滚所有异常

java - 我们不能在枚举中运行 main 方法吗?

javascript - 中断数据流并断开设备连接

android - 打开一个 12kb 的文本文件需要太长时间......?

java - @Indexable在elasticsearch-osem中的作用是什么?

Android facebook SDK 作为 JAR

android - 将 FOV 角度转换为透视投影参数

java - 如果没有SD卡,该怎么办?

android - 获取 Android 上的所有总空间和可用空间