繁体   English   中英

Android SDK外部存储,找不到文件

[英]Android SDK External Store, File Not Found

我一直在努力将ArrayList存储在Galaxy S4的SD卡上。 由于我自己似乎无法弄清楚的原因,我在这段代码中不断获得File Not Found Exception:

File file = new File(Environment.getExternalStorageDirectory(), name);

        if(file.exists()) file.delete();
        try{                   
                OutputStream os = new FileOutputStream(file);
                OutputStreamWriter osw = new OutputStreamWriter(os);
                for(int j = 0; j < fallList.size(); j++)
                osw.write(fallList.get(j));
                os.close();
                osw.close();

            } catch (FileNotFoundException e){

                Toast.makeText(getApplicationContext(),"File Not Found",Toast.LENGTH_LONG).show();

                e.printStackTrace();
            } 

编辑:

正确添加权限后,我不再获得File Not Found Exception,而是IOException。 我注意到设备监视器中存在一些系统错误:

04-26 13:54:15.115:D / ViewRootImpl(27953):ViewPostImeInputStage ACTION_DOWN 04-26 13:54:20.130:D / ViewRootImpl(27953):ViewPostImeInputStage ACTION_DOWN 04-26 13:54:20.270:W / System.err (27953):java.io.IOException:文件描述符已关闭04-26 13:54:20.280:W / System.err(27953):at libcore.io.Posix.writeBytes(Native Method)04-26 13:54: 20.310:W / System.err(27953):at libcore.io.Posix.write(Posix.java:223)04-26 13:54:20.310:W / System.err(27953):at libcore.io.BlockGuardOs .write(BlockGuardOs.java:313)04-26 13:54:20.310:W / System.err(27953):at libcore.io.IoBridge.write(IoBridge.java:497)04-26 13:54:20.310 :W / System.err(27953):at java.io.FileOutputStream.write(FileOutputStream.java:186)04-26 13:54:20.310:W / System.err(27953):at java.io.OutputStreamWriter。 flushBytes(OutputStreamWriter.java:167)04-26 13:54:20.310:W / System.err(27953):at java.io.OutputStreamWriter.close(OutputStreamWriter.java:140)04-26 13:54:20.310: W / System.err(27953):at com.example.med603.sharedpreffalldetect.Ma inActivity.toFile(MainActivity.java:142)04-26 13:54:20.310:W / System.err(27953):at com.example.med603.sharedpreffalldetect.MainActivity.access $ 000(MainActivity.java:35)04- 26 13:54:20.310:W / System.err(27953):at com.example.med603.sharedpreffalldetect.MainActivity $ 2.onClick(MainActivity.java:73)04-26 13:54:20.310:W / System.err (27953):在android.view.View.performClick(View.java:5197)04-26 13:54:20.310:W / System.err(27953):at android.view.View $ PerformClick.run(View。 java:20926)04-26 13:54:20.310:W / System.err(27953):在android.os.Handler.handleCallback(Handler.java:739)04-26 13:54:20.310:W / System。错误(27953):在android.os.Handler.dispatchMessage(Handler.java:95)04-26 13:54:20.310:W / System.err(27953):在android.os.Looper.loop(Looper.java) :145)04-26 13:54:20.310:W / System.err(27953):在android.app.ActivityThread.main(ActivityThread.java:5951)04-26 13:54:20.320:W / System.err (27953):at java.lang.reflect.Method.invoke(Native Method)04-26 13:54:20.320:W / System.err(27953):at java.lang.reflect.Method.invoke(Method.java:372)04-26 13:54:20.320:W / System.err(27953):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit .java:1400)04-26 13:54:20.320:W / System.err(27953):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)

我之前没有使用过d.log,所以我不完全确定我在这里看到的是什么。

  1. 在AndroidManifest.xml中检查您的权限。 您需要外部存储的READ&WRITE权限。
  2. 尝试使用不同的目录。 例如, getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)

所以我明白了; 首先,当我“重新做”应用程序时,我忘记了权限(第一次尝试太乱了) - 这解决了File Not Found Exception!

然后我得到了一个IOException,这似乎是因为我没有刷新OutputStreamWriter。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM