我正在data / data / myPackage / files /中创建一个文件:
file = new File( getFilesDir() + "/file.txt");
我完全确定该文件已创建 创建之后我打电话给:
file.canWrite();
结果是真的。
当我尝试使用该文件时 我得到:“许可被拒绝” 在Eclipse中,在DDMS中,此文件权限类似于:
-rw-------
有人可以帮忙吗?
由于
答案 0 :(得分:9)
确保您具有写入文件的正确权限。在清单文件中,包含此行
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />.
答案 1 :(得分:8)
打开文件(并同时创建)的最简单方法是使用openFileOutput("file.txt", MODE_PRIVATE)
方法。
这确保了文件只能由您的应用程序读取(与您目前的相同),并且它会返回FileOutputStream
,因此您可以开始写入它。
答案 2 :(得分:3)
权限对我来说是正确的。每个应用程序都以不同的用户身份运行,因此只能访问它自己的文件。
当您说“我尝试使用该文件”时,您的意思是什么?你可以发布代码,因为我认为这就是问题所在。
答案 3 :(得分:1)
如果您知道使用File()创建文件,并且您不想使用openFileOutput(),请尝试以下操作:
FileWriter fWriter;
try {
fWriter = new FileWriter(file, true);
fWriter.write("hello");
fWriter.close();
} catch (IOException e) {
// log error
}
答案 4 :(得分:1)
我一直在研究nullpointerexception的问题,找不到文件几个小时。我已经从模拟器移动到实际设备。在模拟器中,以下工作:
BufferedWriter osw = new BufferedWriter(new FileWriter(path));
当我直接进入设备时,我得到了例外 Neelesh Gajender完美地回答了问题。添加:::
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Android清单中的完全解决了这个问题。我很感谢Neelesh和Kudos!
答案 5 :(得分:0)
我发现在'/ data / data / myPackage / files /'上写, 需要设置权限。
有MODE_WORLD_WRITEABLE,
这是对这个案子感兴趣的人,
但即使有这个权限集,我仍然有错误。
我想:“也许我需要的是EXECUTE许可......”
API中没有此类许可
但即使我试图在模式参数中加上3
(MODE_WORLD_WRITEABLE = 2),
并且...它工作了!
但是当我使用该权限集写入SD卡时,
我也得到了一个错误,
所以我对两个文件夹的写法不同。
int permission = 3;
if (whereToWrite == WRITE_TO_DATA_FOLDER) {
FileOutputStream fos = openFileOutput(file.getName(), permission);
buffOutStream = new BufferedOutputStream(fos);
} else if (whereToWrite == WRITE_TO_SD_CARD){
buffOutStream = new BufferedOutputStream(new FileOutputStream(file));
}
顺便说一下,
MODE_WORLD_WRITEABLE错误,
MODE_WORLD_WRITABLE是对的。