java.io.FileNotFoundException: /storage/emulated/0/Android/d



我正在寻求您的帮助,我被困在我的安卓项目中,我找不到解决方案。

解释:

我使用 FileUtils.copyURLToFile(url, file( 从互联网上的 URL 中检索一个 .ics (iCalendar( 文件,其中包含 Apache Common 库。 它运行良好,我的文件是用我的数据创建的,并且是可读的。

我将文件保存在路径中:/storage/emulated/0/Android/data/MyApplication/MyFile.ics。

我可以在此地址的手机(Android Pie(和/或模拟器(Android Oreo(的文件中看到它。所以它被很好地创造和呈现。

但是当我想使用 iCal4j 库解析我的文件时,我收到包含 FileInputStream 的行的错误,告诉我我的文件或目录在此地址不存在。

编辑我指定我使用 file.exist(( 检查我的文件是否存在。如果它存在,那么它会调用函数来解析我的文件。我在FileInputStream方面有问题的地方。 所以是的,file.exist(( 告诉我它存在。

File file = new File(Environment.getExternalStorageDirectory() + "/Android/data/MyApplication/MyFile.ics");
FileInputStream fin = new FileInputStream(file.getPath());
CalendarBuilder builder = new CalendarBuilder();
Calendar calendar = builder.build(fin);

我有一个错误。

我的错误 :

W/System.err: java.io.FileNotFoundException: /storage/emulated/0/Android/data/MyApplication/MyFile.ics (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:200)
at java.io.FileInputStream.<init>(FileInputStream.java:150)
at java.io.FileInputStream.<init>(FileInputStream.java:103)

我的清单.xml

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

我还请求了用户访问存储的权限:

requestPermissions(new String[]{WRITE_EXTERNAL_STORAGE,READ_EXTERNAL_STORAGE}, 1);

我希望我足够清楚,可以得到帮助,谢谢。

尝试使用以下代码File file = new File(Environment.getExternalStorageDirectory() + "/MyApplication/MyFile.ics");

如果请求了所有权限,它仍会提示权限请求失败。这可能是Android 10.0的适应问题。您可以将其添加到

<application
...
android:requestLegacyExternalStorage="true"
...
>

https://developer.android.com/training/data-storage/use-cases

File file = new File(Environment.getExternalStorageDirectory()+"/Android/data/MyApplication/MyFile.ics");
if(file.createNewFile(){
FileInputStream fin = new FileInputStream(file.getPath());
// Your entire code
}
else{
//File exist already Handle it
}

提示:

  1. 替换(仅减小代码大小不是强制性的(Environment.getExternalStorageDirectory()+"/Android/data/MyApplication/MyFile.icsgetActivity().getExternalFilesDir(null)+"/MyFiles.ics"
  2. 无需读写权限即可读取和写入永久文件夹,因此请尽可能将其删除。

如果您的应用目标高于或等于 Android 10,则添加 应用程序标记内android:requestLegacyExternalStorage="true"

喜欢:

<application
....
android:requestLegacyExternalStorage="true"
....>

相关内容

  • 没有找到相关文章

最新更新