设为首页 收藏本站
查看: 1813|回复: 0

[经验分享] java.io.FileNotFoundException: xxx: open failed: EROFS (Read

[复制链接]

尚未签到

发表于 2019-1-27 06:43:39 | 显示全部楼层 |阅读模式
  12-21 17:21:13.672: W/System.err(1583): java.io.FileNotFoundException: /downloadedMusic.mp3: open failed: EROFS (Read-only file system)
12-21 17:21:13.672: W/System.err(1583): at libcore.io.IoBridge.open(IoBridge.java:416)
12-21 17:21:13.672: W/System.err(1583): at java.io.FileOutputStream.(FileOutputStream.java:88)
12-21 17:21:13.672: W/System.err(1583): at java.io.FileOutputStream.(FileOutputStream.java:73)
12-21 17:21:13.672: W/System.err(1583): at crifan.com.crifanLib.downlodFile(crifanLib.java:197)
12-21 17:21:13.672: W/System.err(1583): at crifan.com.crifanLibSongtaste.stDownloadFromUrl(crifanLibSongtaste.java:204)
12-21 17:21:13.672: W/System.err(1583): at crifan.com.downloadsongtastemusic.MainActivity.preformDownload(MainActivity.java:74)
12-21 17:21:13.672: W/System.err(1583): at java.lang.reflect.Method.invokeNative(Native Method)
12-21 17:21:13.672: W/System.err(1583): at java.lang.reflect.Method.invoke(Method.java:511)
12-21 17:21:13.672: W/System.err(1583): at android.view.View$1.onClick(View.java:3586)
12-21 17:21:13.672: W/System.err(1583): at android.view.View.performClick(View.java:4084)
12-21 17:21:13.672: W/System.err(1583): at android.view.View$PerformClick.run(View.java:16966)
12-21 17:21:13.672: W/System.err(1583): at android.os.Handler.handleCallback(Handler.java:615)
12-21 17:21:13.672: W/System.err(1583): at android.os.Handler.dispatchMessage(Handler.java:92)
12-21 17:21:13.672: W/System.err(1583): at android.os.Looper.loop(Looper.java:137)
12-21 17:21:13.672: W/System.err(1583): at android.app.ActivityThread.main(ActivityThread.java:4745)
12-21 17:21:13.672: W/System.err(1583): at java.lang.reflect.Method.invokeNative(Native Method)
12-21 17:21:13.672: W/System.err(1583): at java.lang.reflect.Method.invoke(Method.java:511)
12-21 17:21:13.672: W/System.err(1583): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
12-21 17:21:13.672: W/System.err(1583): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
12-21 17:21:13.672: W/System.err(1583): at dalvik.system.NativeStart.main(Native Method)
12-21 17:21:13.672: W/System.err(1583): Caused by: libcore.io.ErrnoException: open failed: EROFS (Read-only file system)
12-21 17:21:13.672: W/System.err(1583): at libcore.io.Posix.open(Native Method)
12-21 17:21:13.689: W/System.err(1583): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
12-21 17:21:13.689: W/System.err(1583): at libcore.io.IoBridge.open(IoBridge.java:400)
12-21 17:21:13.689: W/System.err(1583): … 19 more
  

很明显,是没有权限去访问对应的位置:
/downloadedMusic.mp3
所以,接着就是去,想办法,如何将下载的东西,存储到Android中的,某个位置,程序有权限访问的位置。
  去AndroidManifest.xml中添加了:

  
然后继续添加代码。
结果代码:
File extDir = Environment.getExternalStorageDirectory();
String filename = "downloadedMusic.mp3";
File fullFilename =new File(extDir.getAbsolutePath() + extDir.pathSeparatorChar + filename);
try {
    fullFilename.createNewFile();
    fullFilename.setWritable(Boolean.TRUE);
    songtaste.stDownloadFromUrl(strSongUrl, fullFilename);
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}  就出错了:
  

12-21 17:45:48.298: W/System.err(1547): java.io.IOException: open failed: EROFS (Read-only file system)
12-21 17:45:48.298: W/System.err(1547):     at java.io.File.createNewFile(File.java:940)

12-21 17:45:48.298: W/System.err(1547):     at crifan.com.downloadsongtastemusic.MainActivity.preformDownload(MainActivity.java:83)
12-21 17:45:48.298: W/System.err(1547):     at java.lang.reflect.Method.invokeNative(Native Method)
12-21 17:45:48.298: W/System.err(1547):     at java.lang.reflect.Method.invoke(Method.java:511)
12-21 17:45:48.298: W/System.err(1547):     at android.view.View$1.onClick(View.java:3586)
12-21 17:45:48.298: W/System.err(1547):     at android.view.View.performClick(View.java:4084)
12-21 17:45:48.298: W/System.err(1547):     at android.view.View$PerformClick.run(View.java:16966)
12-21 17:45:48.298: W/System.err(1547):     at android.os.Handler.handleCallback(Handler.java:615)
12-21 17:45:48.298: W/System.err(1547):     at android.os.Handler.dispatchMessage(Handler.java:92)
12-21 17:45:48.298: W/System.err(1547):     at android.os.Looper.loop(Looper.java:137)
12-21 17:45:48.298: W/System.err(1547):     at android.app.ActivityThread.main(ActivityThread.java:4745)
12-21 17:45:48.298: W/System.err(1547):     at java.lang.reflect.Method.invokeNative(Native Method)
12-21 17:45:48.298: W/System.err(1547):     at java.lang.reflect.Method.invoke(Method.java:511)
12-21 17:45:48.298: W/System.err(1547):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
12-21 17:45:48.298: W/System.err(1547):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
12-21 17:45:48.298: W/System.err(1547):     at dalvik.system.NativeStart.main(Native Method)
12-21 17:45:48.298: W/System.err(1547): Caused by: libcore.io.ErrnoException: open failed: EROFS (Read-only file system)
12-21 17:45:48.309: W/System.err(1547):     at libcore.io.Posix.open(Native Method)
12-21 17:45:48.309: W/System.err(1547):     at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
12-21 17:45:48.309: W/System.err(1547):     at java.io.File.createNewFile(File.java:933)
12-21 17:45:48.309: W/System.err(1547):     … 15 more
  再去改为:
File extDir = Environment.getExternalStorageDirectory();
String filename = "downloadedMusic.mp3";
File fullFilename = new File(extDir, filename);
try {
    fullFilename.createNewFile();
    fullFilename.setWritable(Boolean.TRUE);
    songtaste.stDownloadFromUrl(strSongUrl, fullFilename);
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}  
结果是,可以正常新建文件:
/mnt/sdcard/downloadedMusic.mp3
看来之前就是由于:
/mnt/sdcard:downloadedMusic.mp3
而导致无法创建的。
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-667974-1-1.html 上篇帖子: 【庆】今天我的博客Open了! 下篇帖子: 感谢open
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表