7

使用文档中的数据存储页面,我尝试将一些数据存储到 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:是”的 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 回答