2

アプリケーションで 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)
4

1 に答える 1

2

この問題の解決策は、SD カードをエミュレータに追加することでした。SDカードをエミュレータに追加した後、すべて正常に機能しました。

これを行う 1 つの方法を次に示します。

もう 1 つの方法は、Eclipse でデバイスのリストを取得してから、新しい仮想デバイスを作成することです。仮想デバイスのセットアップ中に、オプションを含むウィンドウが表示され、sdcard が必要かどうか、および必要なサイズが尋ねられます。これが私がやった方法であり、オンラインでチュートリアルを見つけることができませんでした。オプションを探しているときに偶然これに出くわしました。

前もって感謝します!

于 2011-04-06T15:30:40.693 に答える