2011-04-06 111 views
2

我不能让我的应用程序写入的SD卡。我尝试了几种不同的方法,但他们都没有工作。我在SO上看到了几个帖子,这些帖子都有同样的问题,并且问题没有解决。有人可以看看我的代码,看看有什么不对吗?failling写入到SD卡

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

     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) 
+2

你是一个真正的设备上或在仿真器上运行呢?如果它是仿真器,请确保设备具有设置的虚拟SD卡。 – Drew 2011-04-06 01:36:33

+0

虚拟和真实,我如何设置虚拟SD卡? – prolink007 2011-04-06 02:14:42

+0

@德鲁:我设置SD卡后,它的工作。由于 – prolink007 2011-04-06 04:01:53

回答

2

解决这个问题是一个SD卡添加到仿真器。添加SD卡到模拟器后,一切正常。

Here is one way to do this.

另一种方式,就是拉了,你在Eclipse设备列表,然后创建一个新的虚拟设备。在为虚拟设备设置期间,应该出现一个带有选项的窗口,询问您是否需要SD卡以及您想要的尺寸。这是我做到的,我无法在线找到它的教程。当四处寻找选择时,我偶然偶然发现了这一情况。

在此先感谢!