我无法对 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/