【发布时间】:2011-07-30 10:16:19
【问题描述】:
我无法让我的应用程序写入 SD 卡。我尝试了几种不同的方法,但都没有奏效。我在这里看到了一些关于 SO 的帖子有同样的问题并且问题没有解决。有人可以看看我的代码,看看有什么问题吗?
我的清单中有<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)
【问题讨论】:
-
你是在真机还是模拟器上运行?如果是模拟器,请确保设备设置了虚拟 SD 卡。
-
虚拟和真实,如何设置虚拟SD卡?
-
@Drew:我设置了 SD 卡后,它工作了。谢谢
-
您应该在自己的问题上发布一个提及这一点的答案并接受它,这样该问题就会被标记为已回答并停止显示在未回答的问题列表中。
-
@Luis:我也要去,我正在用我的手机发布之前的评论,所以我也不能。我会在接下来的几分钟内完成。
标签: android file android-file