java - java.io.FileNotFoundException:/storage/emulated/0/Android/data/MyApplication/MyFile.ics。(没有这样的文件或目录)/Android Studio/Ical4j
问题描述
我正在寻求您的帮助,我被困在我的 android 项目中,找不到解决方案。
解释 :
我使用 FileUtils.copyURLToFile(url, file) 从 Internet 上的 URL 中检索 .ics (iCalendar) 文件,并使用 Apache 公共库。它工作得很好,我的文件是用我的数据创建的,它是可读的。
我将文件保存在 路径中:/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)
我的manifest.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");
推荐阅读
- monit - 容错计数器解决方法/替代方案
- go - 如何在不同型号的路由器上执行命令
- vue.js - 在 Vuejs 中有条件地关闭插入
- r - 在 R 的两个不同列中计算 0,1
- node.js - Node.js 12 的 TypeScript tsconfig 设置?
- c++ - ISO C++ 禁止指针和整数之间的比较 [-fpermissive] [c++]
- android - 使用 Android Worker 时 beginUniqueWork ExistingWorkPolicy.KEEP:: 如何检测后续入队何时不开始工作
- r - 另一个包正在从自动完成候选者中删除我的 S4 'predict' 方法
- c# - 在 C#/.NET 中使用 protobuf3 发送通用数据类型的正确方法
- android - 定位 android:windowBackground 可绘制到窗口底部