【问题标题】:FileNotFoundException EACCES (Permission Denied)FileNotFoundException EACCES(权限被拒绝)
【发布时间】:2015-06-10 19:38:35
【问题描述】:

我在尝试打开 FileInputStream 时遇到文件打开权限被拒绝的异常。

 File myFile = new File(Environment.getExternalStorageDirectory()
           .getAbsolutePath() + "/test/test.txt");
 try {
      FileInputStream inStream = new FileInputStream(myFile); // crash

这是堆栈跟踪:

 System.err﹕ java.io.FileNotFoundException: /storage/emulated/0/test/test.txt: open failed: EACCES (Permission denied)
 System.err﹕ at libcore.io.IoBridge.open(IoBridge.java:456)
 System.err﹕ at java.io.FileInputStream.<init>(FileInputStream.java:76)

 ...

 Caused by: android.system.ErrnoException: open failed: EACCES (Permission denied)
 at libcore.io.Posix.open(Native Method)
 at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
 at libcore.io.IoBridge.open(IoBridge.java:442)

是的,我的清单中确实有权限:

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

【问题讨论】:

标签: android file exception filenotfoundexception


【解决方案1】:

Android 区分大小写。将ANDROID.PERMISSION 替换为android.permission

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

此外,您应该只需要其中一项权限。如果您打算写入外部存储,则不需要READ_EXTERNAL_STORAGE

【讨论】:

  • 好的,谢谢。 AndroidStudio 自动完成全部大写。完全错过了。
  • @DavidM:“AndroidStudio 自动完成全部大写”——真的吗?您运行的是哪个版本的 Android Studio?我想看看我是否可以重现它,如果可以,请为它提交错误报告。谢谢!
  • 是的,我输入了
  • @DavidM:该问题已被报告,事实证明:code.google.com/p/android/issues/detail?id=173977
  • 有同样的问题,但这并没有解决它:/有谁知道还有什么可能是异常的原因?
猜你喜欢
  • 2020-02-14
  • 1970-01-01
  • 1970-01-01
  • 2020-06-03
  • 2014-05-11
  • 1970-01-01
  • 1970-01-01
  • 2011-12-28
  • 2015-07-20
相关资源
最近更新 更多