当前位置: 首页 > 知识库问答 >
问题:

尝试在Android中将文件写入SD卡时,FileNotFoundException(权限被拒绝)

丁俊爽
2023-03-14

正如您从标题中注意到的,我在Android中将文件写入SD卡时遇到了问题。我检查了这个问题,但它对我没有帮助。我想在SD卡上的公共空间中编写文件,以便任何其他应用程序都可以读取它。

首先,我检查SD卡是否已安装:

Environment.getExternalStorageState();

然后,我运行以下代码:

File baseDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
    baseDir.mkdirs();
    File file = new File(baseDir, "file.txt");
    try {
        FileOutputStream out = new FileOutputStream(file);
        out.flush();
        out.close();
        Log.d("NEWFILE", file.getAbsolutePath());
    } catch (IOException e) {
        e.printStackTrace();
    }

我有:

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

<application>
...
</application>
</manifest>

在我的AndroidManifest中。xml。

确切的错误是:

java.io.FileNotFoundException: /storage/1510-2908/Download/secondFile.txt: open failed: EACCES (Permission denied)

我正在模拟器上测试我的代码(模拟Nexus5 API 23)。我所需的最低SDK版本是19(4.4 Kitkat)。

此外,使用相同的代码将文件写入SD卡上的私人文件夹时,一切都很好,所以我认为以前的代码也应该适用:

File newFile = new File(getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), "esrxdtcfvzguhbjnk.txt");
    newFile.getParentFile().mkdirs();
    try {
        FileOutputStream out = new FileOutputStream(newFile);
        out.flush();
        out.close();
        Log.d("NEWFILE", newFile.getAbsolutePath());
    } catch (IOException e) {
        e.printStackTrace();
    }

有人知道问题出在哪里吗?可能是KitKat 4.4不再允许在SD卡中的公共空间中写入内容,还是?

共有1个答案

岑驰
2023-03-14
  1. 将文件写入SD卡上的私人文件夹,一切正常

从Android 4.4开始,如果您只读取或写入应用程序私有的文件,则不需要这些权限。有关详细信息,请参阅保存应用程序私有的文件。

当您尝试在具有API 23(Marshmallow)的模拟器中编写文件时,您还需要在运行时请求WRITE_EXTERNAL_STORAGE权限。检查此和此以获取更多详细信息。

 类似资料:
  • 问题内容: 从标题中可以看到,我在Android中将文件写入sdcard时遇到问题.我想写入将在sdcard上的公共空间中的文件,以便任何其他应用程序都可以读取它。 首先,我检查sdcard是否已安装: 然后,我运行以下代码: 我有: 在我的AndroidManifest.xml中。 确切的错误是这样的: 我正在模拟器上测试代码(模拟Nexus5 API 23)。我要求的最低SDK版本是19(4.

  • 我试图在txt文件中写入从html表单获取的数据,但出现以下错误:警告:fopen(/var/www/4/datos.txt):无法打开流:在/var/www/4/comprobacionformulaio中的权限被拒绝。php第13行警告:fwrite()希望参数1是资源,布尔值在/var/www/4/comprobacionformulaio中给出。php第16行警告:fclose()希望参数

  • 我试图在android中写入文件,但一直出现以下错误: java.io.FileNotFoundException: /storage/emulated/0/Notes/TestFile.txt(权限拒绝) 搜索此网站可以简单地解决此问题,即向应用程序清单文件添加WRITE\u EXTERNAL\u存储,但这对我不起作用。我一直在犯同样的错误。

  • 我遇到一个例外,当我试图打开FileInputStream时,文件打开权限被拒绝。 这是stacktrace: 是的,我在清单中有权限:

  • 问题内容: 我正在尝试使用Python在Windows OS上创建并写入一个临时文件。我已经使用Python模块创建了一个临时文件。 但是当我去写那个临时文件的时候我得到了一个错误。我不可以写临时文件吗?难道我做错了什么?如果要创建并写入临时文件,应该如何在Python中进行操作?为了安全起见,我想在temp目录中创建一个临时文件,而不是在本地(在.exe正在执行的目录中)中创建一个临时文件。 问

  • 问题内容: 我正在使用以下代码从服务器下载文件,然后将其写入sd卡的根目录,一切正常: 但是,;表示文件将始终写入root /mnt/sdcard。是否可以指定某个文件夹来写入文件? 例如: 问题答案: