android的java文件存储在哪_【已解决】Android中的文件存储位置:java.io.FileNotFoundException: xxx: open failed: EROFS (Read...

【问题】

折腾:

的过程中,出错: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中的,某个位置,程序有权限访问的位置。

【解决过程】

1.然后找到了官网的:

去看解释。

2.再参考:

的解释,去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

3.再参考:

先去改为: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

而导致无法创建的。

4.有待后续。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值