权限被拒绝:在... /文件中创建的文件

时间:2010-01-07 17:33:10

标签: android

我正在data / data / myPackage / files /中创建一个文件:

file = new File( getFilesDir() + "/file.txt");

我完全确定该文件已创建 创建之后我打电话给:

file.canWrite();

结果是真的。

当我尝试使用该文件时 我得到:“许可被拒绝” 在Eclipse中,在DDMS中,此文件权限类似于:

-rw-------

有人可以帮忙吗?

由于

6 个答案:

答案 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是对的。