7

docsの data-storage ページを使用して、SD カードにデータを保存しようとしました。これは私のコードです:

    // Path to write files to
    String path = Environment.getExternalStorageDirectory().getAbsolutePath() +
                  "/Android/data/"+ctxt.getString(R.string.package_name)+"/files/";
    String fname = "mytest.txt";

    // Current state of the external media
    String extState = Environment.getExternalStorageState();

    // External media can be written onto
    if (extState.equals(Environment.MEDIA_MOUNTED))
    {
        try {
            // Make sure the path exists
            boolean exists = (new File(path)).exists();  
            if (!exists){ new File(path).mkdirs(); }  

            // Open output stream
            FileOutputStream fOut = new FileOutputStream(path + fname);

            fOut.write("Test".getBytes());

            // Close output stream
            fOut.flush();
            fOut.close();

        } catch (IOException ioe) {
            ioe.printStackTrace();
        }

新しい FileOutputStream を作成すると、FileNotFound 例外が発生します。また、「mkdirs()」がディレクトリを作成していないように見えることにも気付きました。

誰が私が間違っているのか教えてもらえますか?

2GB の sd カードと「hw.sdCard: yes」を使用して AVD でテストしています。Eclipse の DDMS のファイル エクスプローラーは、sdcard の唯一のディレクトリが「LOST.DIR」であることを示しています。

4

2 に答える 2

7

アプリケーションに SD カードへの書き込み権限を与えていますか?

これを行うには、次を に追加しますAndroidManifest.xml

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
于 2010-05-24T10:02:49.817 に答える
2

SDカードに読み書きする前に、SDカードがマウントされているかどうかを確認することを忘れないでください。

Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)
于 2012-06-26T08:49:39.290 に答える