我正在使用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()); } }
应用程序将永远无权对其进行写入。
Context.getFilesDir()方法将返回应用程序应将文件写入的目录。会是这样的/data/data/com.yourdomain.YourApp/files。
Context.getFilesDir()
/data/data/com.yourdomain.YourApp/files
如果要写入手机存储中的文件,请使用Context.openFileOutput()方法。
Context.openFileOutput()
如果您想要SD卡的路径,请使用Environment.getExternalStorageDirectory()method。要写入SDCard,您需要通过向清单中添加以下内容来为您的应用程序授予适当的权限:
<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));