android - 无法写入 SD 卡

标签 android file android-file

我无法让我的应用程序写入 SD 卡。我尝试了几种不同的方法,但都没有用。我在 SO 上看到了几篇有同样问题的帖子,但问题没有得到解决。有人可以看看我的代码,看看有什么问题吗?

我有<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>在我的 list 中。

                       String inFileName = "/data/data/cpe495.smartapp/files/test.csv"; //TODO Use folder/filename
                          File inFile = new File(inFileName);
                          try{
                          FileInputStream fis = new FileInputStream(inFile);

                          String outFileName = Environment.getExternalStorageDirectory()+"/test.csv"; //TODO Use output filename
                          OutputStream output = new FileOutputStream(outFileName);

                          byte[] buffer = new byte[1024];
                          int length;
                          while ((length = fis.read(buffer))>0)
                            output.write(buffer, 0, length);

                          output.flush();
                          output.close();
                          fis.close();
                          } catch (Exception e) {
                              e.printStackTrace();
                          }   

04-06 00:17:14.961: WARN/System.err(279): java.io.FileNotFoundException: /mnt/sdcard/test.csv (Permission denied)
04-06 00:17:15.000: WARN/System.err(279):     at org.apache.harmony.luni.platform.OSFileSystem.openImpl(Native Method)
04-06 00:17:15.000: WARN/System.err(279):     at org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:152)
04-06 00:17:15.012: WARN/System.err(279):     at java.io.FileOutputStream.<init>(FileOutputStream.java:97)
04-06 00:17:15.022: WARN/System.err(279):     at java.io.FileOutputStream.<init>(FileOutputStream.java:168)
04-06 00:17:15.032: WARN/System.err(279):     at java.io.FileOutputStream.<init>(FileOutputStream.java:147)
04-06 00:17:15.032: WARN/System.err(279):     at cpe495.smartapp.SmartApp$8.onClick(SmartApp.java:165)
04-06 00:17:15.041: WARN/System.err(279):     at android.view.View.performClick(View.java:2408)
04-06 00:17:15.051: WARN/System.err(279):     at android.view.View$PerformClick.run(View.java:8816)
04-06 00:17:15.062: WARN/System.err(279):     at android.os.Handler.handleCallback(Handler.java:587)
04-06 00:17:15.062: WARN/System.err(279):     at android.os.Handler.dispatchMessage(Handler.java:92)
04-06 00:17:15.072: WARN/System.err(279):     at android.os.Looper.loop(Looper.java:123)
04-06 00:17:15.072: WARN/System.err(279):     at android.app.ActivityThread.main(ActivityThread.java:4627)
04-06 00:17:15.081: WARN/System.err(279):     at java.lang.reflect.Method.invokeNative(Native Method)
04-06 00:17:15.091: WARN/System.err(279):     at java.lang.reflect.Method.invoke(Method.java:521)
04-06 00:17:15.091: WARN/System.err(279):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-06 00:17:15.101: WARN/System.err(279):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-06 00:17:15.101: WARN/System.err(279):     at dalvik.system.NativeStart.main(Native Method)

最佳答案

解决这个问题的办法是给模拟器加一个sdcard。将 SD 卡添加到模拟器后一切正常。

Here is one way to do this.

另一种方式,是在 Eclipse 中提取设备列表,然后创建一个新的虚拟设备。在虚拟设备的设置过程中,应该会出现一个带有选项的窗口,询问您是否需要 sdcard 以及您想要的大小。我就是这样做的,我无法在网上找到它的教程。我在四处寻找选择时偶然发现了这一点。

提前致谢!

关于android - 无法写入 SD 卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5560112/

相关文章:

java.lang.IndexOutOfBoundsException : Invalid index 20, 大小为 20

java - 开销与代码速度(java.io.File 数组与 java.lang.String 数组)

android - 如何在android中使用服务显示图像

android - 如何在 Android 中以编程方式将图像文件从图库复制到另一个文件夹

java - 写出文件下载的百分比?

android - 如何强制网站扩展以修复移动设备(Iphone android ..)

android - 如何在Android Studio中配置xml代码风格?

android - 使用 adb 备份安卓设备

java mp3输入流到字节数组?

file - 在 Azure 中使用文件压缩/加密