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

无法在外部存储公共目录中创建目录

巫马庆
2023-03-14

我正在尝试创建一个目录和文件,以便可以存储从Internet下载的文件。但是,我无法在外部公共存储中创建目录和文件。如果我写入外部私有存储(应用程序的特定存储位置),我完全可以这样做。

代码如下:

    String storageDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath();
    System.out.println(storageDirectory);
    File mediaDir = new File(storageDirectory);
    if (!mediaDir.exists()) {
        System.out.println(mediaDir.mkdirs());
        System.out.println(mediaDir.isDirectory());
    }
    File mediaFile = new File(storageDirectory, "boga.jpg");
    try {
        mediaFile.createNewFile();
    } catch (IOException e) {
        e.printStackTrace();
    }

上面的代码导致:

09-13 05:33:45.258 5867-5867/? I/S。出来﹕ /存储/0CED-0F09/图片

09-13 05:33:45.260 5867-5867/? I/S。出来﹕ 假

09-13 05:33:45.260 5867-5867/? I/S。出来﹕ 假

有IOException(无此类文件或目录):

09-13 05:33:45.260 5867-5867/? W/System.err︰java.io.IOException:open失败:ENOENT(没有这样的文件或目录)

09-13 05:33:45.260 5867-5867/? 带系统。犯错误﹕ 在java。io。文件创建新文件(File.java:939)

09-13 05:33:45.260 5867-5867/? W/System.err︰com.example.terabyte.tut1app. MainActivity.on创建(MainActivity.java:78)

这是我的清单:

<?xml version="1.0" encoding="utf-8"?>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

可能是什么问题?

共有2个答案

锺离嘉容
2023-03-14

实际上emulator没有问题。

您在模拟器上使用的设备可能在android上等于或高于6.0版

在6.0及更高版本中,您需要在运行时请求写权限。写入外部存储器

在你的智能手机中,它起作用了,因为它在Android5.0上

如果这对某人有帮助,我会很高兴。

洪知
2023-03-14

事实证明,我完全能够在真正的智能手机设备(华为P8 api level 21,版本5.0)上写入外部存储目录。但不能访问emulator的外部存储,即使存储完全可用并且可以从emulator内浏览。

这也帮助我解决了实际设备上的外部存储问题:https://stackoverflow.com/a/6311955/5330055

我不再迫切需要解决这个问题,但很高兴知道模拟器出了什么问题。

 类似资料:
  • 我在牛轧糖上开发了一个应用程序,可以在外部存储中创建一个目录。 我以前是这样做的: 此代码似乎不适用于API 26(Android Oreo)。该目录未创建。 我如何才能实现同样的目标,最好是在API 21到API 26的所有android版本上都能实现?

  • 我有问题在Android Studio中创建外部存储的新目录。它可能必须做一些有权限的事情,但据我所知,一切似乎都很好。 我想做的是: 检查目录“/storage/emulated/0/Recordings”是否存在,如果不存在-创建目录 检查文件“/storage/simulated/0/Recordings/tempFile.raw”是否存在,如果存在-将其删除 使用“new FileOutp

  • 最近我更新了我的智能手机到Android11,我注意到我的一个应用程序在创建外部存储目录时崩溃了。我读过Android11文档,这里是。很奇怪,因为当我打开Android/Data dir时,有很多应用程序文件夹,所以有可能这样做,或者有应用程序在更新之前创建的文件夹?

  • 众所周知,谷歌颠覆了Android11的授权概念,并彻底改变了它。 我看了Android留档丛林,但没有找到答案的问题是否仍然可以在外部存储(名为 /storage/emulated/0/)的根目录中创建一个文件夹。如果是,如何? 我的应用在Android上写 临时解决办法可以是这样的: 但这并不理想。如果用户从Android10切换到Android11,那么就有一个大问题。我需要什么额外的代码才

  • 我无法创建目录,我拥有所有权限,这在我的清单中: 在MainActivity onCreate中,检查权限,如果有权限,则应创建一个目录,但始终返回false: 有什么线索或暗示吗?谢谢

  • 找到7个项目drwxr-xr-x-hbase用户0 201 4-06-25 18:58/hbase/.tmp ... 但当我运行此命令时,我会得到 yarn-site.xml Hbase配置hbase-site.xml 我可以浏览http://localhost:50070和http://localhost:8088/cluster 在hbase-marc-master-marc-pc.log中,