数据目录在Android中没有读/写权限

时间:2010-01-04 09:22:36

标签: android android-emulator android-manifest

我使用Android 1.5我的数据目录没有读/写权限

System.out.println("DAta can write??--->"+Environment.getDataDirectory().canWrite());
System.out.println("DAta can read??--->"+Environment.getDataDirectory().canRead());

因此,请建议我如何为数据目录提供权限。

我要做的是创建一个文件并在模拟器的数据存储中添加一些内容,如下所示

private void writeToSDCard() {
        try {

            File lroot = Environment.getDataDirectory();

            if (lroot.canWrite()){
                File lfile = new File(lroot, "samplefile.txt");
                FileWriter lfilewriter = new FileWriter(lfile);
                BufferedWriter lout = new BufferedWriter(lfilewriter);
                lout.write("XXXXXXXXXXXXXXXXXX");
                lout.close();
            }
        } catch (IOException e) {
            Log.e(m_cTAG, "Could not write file " + e.getMessage());
        }
    }

1 个答案:

答案 0 :(得分:68)

您不应该查看数据目录。这是手机存储空间中的系统目录 - 通常为/data - 您的应用程序永远不会有权写入它。

Context.getFilesDir() method返回应用程序应写入文件的目录。它将类似于/data/data/com.yourdomain.YourApp/files

如果您要写入手机存储空间中的文件,请使用Context.openFileOutput() method

如果您想要SDCard的路径,请使用Environment.getExternalStorageDirectory() method。要写入SDCard,您需要通过将以下内容添加到您的Manifest来为您的应用程序提供适当的权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

如果您要写入SDCard,您还需要使用getExternalStorageState()方法检查其状态。

如果您要存储与您的应用程序有关的小文件,那么这些文件可以存入手机的存储空间而不是SD卡,因此请使用Context.openFileOutput()Context.openFileInput()方法。

因此,在您的代码中考虑以下内容:

OutputStream os = openFileOutput("samplefile.txt", MODE_PRIVATE);
BufferedWriter lout = new BufferedWriter(new OutputStreamWriter(os));