我正在尝试创建一个目录和文件,以便可以存储从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>
可能是什么问题?
实际上emulator没有问题。
您在模拟器上使用的设备可能在android上等于或高于6.0版
在6.0及更高版本中,您需要在运行时请求写权限。写入外部存储器
在你的智能手机中,它起作用了,因为它在Android5.0上
如果这对某人有帮助,我会很高兴。
事实证明,我完全能够在真正的智能手机设备(华为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中,