Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 权限被拒绝:在…/files中创建的文件_Android - Fatal编程技术网

Android 权限被拒绝:在…/files中创建的文件

Android 权限被拒绝:在…/files中创建的文件,android,Android,我正在data/data/myPackage/files/中创建一个文件: file = new File( getFilesDir() + "/file.txt"); 我绝对确定该文件已创建。 在其创建之后,我称之为: file.canWrite(); 结果是正确的 当我尝试使用该文件时 我得到:“拒绝许可”。 在Eclipse中,在DDMS中,此文件权限类似于: -rw------- 有人能帮忙吗 谢谢权限在我看来是正确的。每个应用程序都作为不同的用户运行,因此只能访问自己的文件 当你

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

file = new File( getFilesDir() + "/file.txt");
我绝对确定该文件已创建。
在其创建之后,我称之为:

file.canWrite();
结果是正确的

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

-rw-------
有人能帮忙吗


谢谢

权限在我看来是正确的。每个应用程序都作为不同的用户运行,因此只能访问自己的文件


当你说“我试着使用那个文件”是什么意思?你能发布代码吗?我认为这就是问题所在。

打开文件(同时创建文件)最简单的方法是使用该方法


这确保了文件只能由应用程序读取(与您目前的情况相同),并且它会返回一个
FileOutputStream
,这样您就可以开始写入该文件了。

如果您知道该文件是使用file()创建的,并且不想使用openFileOutput(),请尝试以下操作:

FileWriter fWriter;
try {
    fWriter = new FileWriter(file, true);
    fWriter.write("hello");
    fWriter.close();
} catch (IOException e) {
    // log error
}

我发现对于“/data/data/myPackage/files/”的编写,
需要设置权限

有一种模式是可写的,
这是对本案感兴趣的一个,
但即使有了这个权限集,我仍然会出错

我想:“也许我需要的是执行许可……” API中没有此类权限
但即使我试图在模式参数中加上3
(可写模式为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));
}
顺便说一下,
模式\u WORLD\u可写错误,

可写模式是正确的。

确保您有正确的权限写入该文件。在清单文件中,包括此行

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

我已经研究了几个小时的nullpointerexception问题,文件未找到。我已经从仿真器转移到实际设备。在emulator中,以下各项工作正常:

BufferedWriter osw = new BufferedWriter(new FileWriter(path));
但是,当我直接进入设备时,我得到了一个例外。
尼尔什·加詹德完美地找到了答案。加::

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


在android清单中,完全解决了这个问题。我很感谢尼莱什和荣誉

当我说“我尝试使用该文件”时,我的意思是我想安装它。事实上,我正在下载一个.apk并将其所有内容放在这个文件中。由于内存空间,我必须检查是否可以在sd卡中创建此文件。如果不是,我必须在“/data/data/myPackage/files/”文件夹中创建它。openFileOutput和MODE_PRIVATE在上下文对象上。不完全是。如问题所述,
data/data/myPackage/files/
指的是特定于应用程序的内部存储,不需要任何特定权限。您所指的权限仅处理类似于
/sdcard/mnt/…