数据目录在Android中没有读/写权限
Posted
技术标签:
【中文标题】数据目录在Android中没有读/写权限【英文标题】:Data directory has no read/write permission in Android 【发布时间】:2011-01-01 04:30:48 【问题描述】:我使用的是 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】:您不应该查看数据目录。这是手机存储中的系统目录 - 通常是 /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));
【讨论】:
这是我尝试做的事情: 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()); 是的,谢谢您的宝贵建议.. :-) 哪些特定的外部存储状态允许写入文件?Environment.getExternalStorageDirectory()
is deprecated in API Level 29 onwards.以上是关于数据目录在Android中没有读/写权限的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )
Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段
Android——Android10的分区存储(Scoped Storage)