Android:open failed: ENOENT (No such file or directory) 问题的三种解决方案

今天在做ZIP解压时,一直报这个BUG,终于解决,在这里记录一下,以防止下次再犯。

导致这个问题的主要原因有以下几个:

1.未在AndroidManifest.xml中设置相关的读写权限。

解决方法,添加文件读写权限

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

2.文件的保存路径和解压路径不正确

在没有root权限的手机上,APP应用一般只对本身数据存储的区域有访问权限,其他区域无访问权限,所以如果存储错位置,也会出现以上问题。

解决方法,更换存储路径

//获取当前程序路径

getApplicationContext().getFilesDir().getAbsolutePath();

//获取该程序的安装包路径

String path=getApplicationContext().getPackageResourcePath();

//获取程序默认数据库路径

getApplicationContext().getDatabasePath(s).getAbsolutePath();

一般,在我们存储数据时,采用以下方法:

String printTxtPath = getApplicationContext().getFilesDir().getAbsolutePath();
打印出的值为-----/data/data/com.example.fileoperation/files

3.试过了前面两种方法后,这个方法才真正解决了我的问题,那就是mkdir()方法与mkdirs()方法用错了。

mkdir()方法用于创建一层目录,mkdirs()用于创建多层目录,所以如果是多级目录,使用mkdir()方法,同样会报上面的问题。最终把mkdir方法换成mkdirs方法后,问题解决。

  • 10
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
"open failed: ENOENT (No such file or directory)" 错误通常表示尝试打开或访问一个不存在的文件或目录。这可能由以下原因导致: 1. 文件或目录不存在:您尝试打开的文件或目录路径可能是错误的,或者确实在指定的位置上不存在。请确保路径和文件名的正确性,并验证所需的文件或目录是否存在。 2. 权限问题:您可能没有足够的权限来访问指定的文件或目录。请确保您的应用程序具有适当的文件读取权限,以便能够打开和访问所需的文件。 3. 文件或目录被移动或删除:在尝试访问文件或目录之前,可能已经发生了文件或目录的移动、重命名或删除操作。在访问之前,请确保文件或目录尚未被其他操作修改或删除。 4. 文件路径格式错误:如果文件路径包含非法字符、不正确的分隔符或其他格式问题,也可能导致无法找到文件或目录。请确保路径格式正确,并使用正确的分隔符(例如斜杠“/”)。 5. 外部存储问题:如果您尝试访问外部存储设备上的文件,并且设备未正确挂载或不可用,也可能导致此错误。请确保外部存储设备已正确挂载,并且您的应用程序具有适当的存储权限。 要解决此问题,您可以执行以下操作: - 检查文件路径和文件名的正确性,并确保文件或目录存在。 - 检查应用程序的文件读取权限,并确保您具有适当的权限。 - 在访问文件或目录之前,确保它尚未被移动、重命名或删除。 - 确保文件路径格式正确,并使用正确的分隔符。 - 如果涉及外部存储,确保设备已正确挂载,并且您的应用程序具有适当的存储权限。 通过仔细检查和排除上述问题,您应该能够解决 "open failed: ENOENT (No such file or directory)" 错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值