首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

尝试在sdcard中创建目录时,Android File.mkdirs()返回false

在Android中,使用File.mkdirs()方法尝试在sdcard中创建目录时,如果该方法返回false,可能是由于以下几个原因:

  1. 权限问题:首先,确保在AndroidManifest.xml文件中已经声明了适当的权限。在这种情况下,需要添加WRITE_EXTERNAL_STORAGE权限,以便应用程序可以写入外部存储器。可以在AndroidManifest.xml文件中的<manifest>标签内添加以下权限声明:
代码语言:txt
复制
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  1. 外部存储器不可用:如果设备没有安装外部存储器(如SD卡)或者外部存储器不可用,尝试在sdcard中创建目录将会失败。在这种情况下,可以使用Environment.getExternalStorageState()方法来检查外部存储器的状态。如果返回的状态不是Environment.MEDIA_MOUNTED,表示外部存储器不可用。
代码语言:txt
复制
String state = Environment.getExternalStorageState();
if (!Environment.MEDIA_MOUNTED.equals(state)) {
    // 外部存储器不可用
}
  1. 目录已存在:如果尝试创建的目录已经存在,File.mkdirs()方法将返回false。在这种情况下,可以使用File.isDirectory()方法来检查目录是否已经存在。
代码语言:txt
复制
File directory = new File(Environment.getExternalStorageDirectory(), "your_directory_name");
if (directory.exists() && directory.isDirectory()) {
    // 目录已存在
}

综上所述,当Android File.mkdirs()方法返回false时,可能是由于权限问题、外部存储器不可用或目录已存在。需要确保适当的权限已声明,外部存储器可用,并且目录不存在。如果问题仍然存在,可以进一步检查日志以获取更多详细信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 【专业技术】Android数据保存之文件保存

    前言: 上一篇文章写了在Android中利用SharedPreferences保存数据,SharedPreferences在保存数据的时候主要是保存一些应用程序的设置信息或者少量的用户信息,并且是以key-value...文件中进行声明,但是这种默认的权限可能会在以后的Android版本中变更,所以最好还是要在AndroidManifest中显式的进行读取权限声明,免得在以后的版本中程序出现问题,读取权限声明如下: <...: 1、File getFilesDir (); 返回一个文件目录,这个目录下保存应用程序的数据,通过 openFileOutput(String, int) 创建的文件都保存在这个文件目录下。...返回一个文件目录,这个目录存放的是应用程序缓存文件,当系统空间不足时这部分文件首先会被删除。...,你可以输入null,此时返回的是你的应用程序外部存储目录的私有目录的根目录。

    2.1K60

    Android数据存储实现的5大方式

    在模拟器中使用SDCard,你需要先创建一张SDCard卡(当然不是真的SDCard,只是镜像文件)。...创建SDCard可以在Eclipse创建模拟器时随同创建,也可以使用DOS命令进行创建,如下: 在Dos窗口中进入android SDK安装路径的tools目录,输入以下命令创建一张容量为2G的SDCard...-- 在SDCard中创建与删除文件权限 --> android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS...SQLite 和其他数据库最大的不同就是对数据类型的支持,创建一个表时,可以在 CREATE TABLE 语句中指定某列的数据类型,但是你可以把任何数据类型放入任何列中。...当某个值插入数据库时,SQLite 将检查它的类型。如果该类型与关联的列不匹配,则 SQLite 会尝试将该值转换成该列的类型。如果不能转换,则该值将作为其本身具有的类型存储。

    6.8K90

    Android数据存储实现的5大方式

    在模拟器中使用SDCard,你需要先创建一张SDCard卡(当然不是真的SDCard,只是镜像文件)。...创建SDCard可以在Eclipse创建模拟器时随同创建,也可以使用DOS命令进行创建,如下: 在Dos窗口中进入android SDK安装路径的tools目录,输入以下命令创建一张容量为2G的SDCard...-- 在SDCard中创建与删除文件权限 -->        android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS...-- 在SDCard中创建与删除文件权限 --> android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS...SQLite 和其他数据库最大的不同就是对数据类型的支持,创建一个表时,可以在 CREATE TABLE 语句中指定某列的数据类型,但是你可以把任何数据类型放入任何列中。

    3.5K20

    App磁盘沙盒工具实践

    App卸载的时候,相应的app创建的文件也会被删除。 SD卡外部存储 放到sd库中目录下文件,外部开放的文件,可以查看。...如:/sdcard/Android/data/com.yc.helper 第三种:其它目录 比如各个App在/sdcard/目录下创建的目录,如支付宝创建的目录:alipay/,高德创建的目录:amap...当点击"清除数据" 时: 内部存储/data/data/com.yc.helper/cache/、 /data/data/com.yc.helper/code_cache/目录会被清空 外部存储/sdcard...4.5 10和11权限说明 Android10权限改变 比如能够直接在/sdcard/目录下创建目录/文件。可以看出/sdcard/目录下,如淘宝、qq、qq浏览器、微博、支付宝等都自己建了目录。...之前文件创建弊端如下 卸载App也不能删除该目录下的文件 在设置里"清除数据"或者"清除缓存"并不能删除该目录下的文件 App可以随意修改其它目录下的文件,如修改别的App创建的文件等,不安全 为什么要在

    1.8K30

    android之VOLD:staging目录作用与ASEC文件 -总结

    “ 为了保护在VFAT可移动媒体上的/ android_secure目录,避免被在android设备上的第三方应用程序搞乱,我们隐藏一个只读的大小为零的tmpfs的目录安装在最上层。...SDcard)上(如果它不存在的,就创建它) 3....所以当SD卡挂载于手机时,/mnt/sdcard/.android_secure 目录会被映射到/mnt/asec 目录和 /mnt/secure 目录。...其中/mnt/asec 目录中主要是程序的安装目录,包括其执行文件和lib文件等;而/mnt/secure 目录中就存放程序加密后的档案。...”例如: 解密档案: 另外注意: 就是说,在/mnt路径下看到的/mnt/asec目录和/mnt/secure目录并不是真正存在在手机内存或者sd卡的分区挂载目录,他们本省只是根文件系统初始化的时候创建的两个目录

    74730

    Android文件存储使用

    清除数据: 2.1 标新立异在sd卡根目录建一个目录,招致用户反感 2.2 用户卸载应用后,残留目录或者数据在用户机器上,招致用户反感 需要判断两者的可用空间: sd卡存在时,可用空间反而小于机身内部存储...基本操作 使用外部存储,需要的权限,在 AndoridManifest.xml 中: android:name="android.permission.WRITE_EXTERNAL_STORAGE.../Andorid/data/$packageName 在这些$appDataDir目录下的数据,在app卸载之后,会被系统删除,我们应将应用的数据放于这两个目录中。...外部存储中,公开的数据目录。...("folder1"): /storage/sdcard0/folder1 应用数据目录下的目录 一般的在$appDataDir下,会有两个目录 : 数据缓存: $cacheDir

    2.4K30

    在Android手机上使用PaddleMobile实现图像分类

    cd paddle-mobile/tools/ sh build.sh android (可选)如果想编译针对某一个网络编译更小的库时,可以在命令后面加上相应的参数,如下: sh build.sh android...创建Android项目 首先使用Android Studio创建一个普通的Android项目,包名为com.example.paddlemobile1,我们可以不用选择CPP的支持,因为我们已经编译好了...之后按照以下的步骤开始执行: 1、在main目录下创建l两个assets/paddle_models文件夹,这个文件夹我们将会使用它来存放PaddleFluid训练好的预测模型,官方也提供了一些训练好的模型和预测图像...目录下创建一个jniLibs文件夹,这个文件夹是存放CPP编译库的,在本项目中就存放上一部分编译的libpaddle-mobile.so,这里可以下载笔者编译好的模型。...use_photo()方法是打开相册,获取到的图片URI在回到函数中获取。 get_path_from_URI()方法是把图片的URI转换成绝对路径。

    77320

    Android教程-保存数据-保存文件

    本节课描述了如何使用 File API在Android文件系统中读写文件. File 对象适用于用一种没有跳跃的从开始一直到结尾的方式读写大量数据....在内部存储中保存一个文件 ---- 当要在一个内部存储中保存一个文件时,你可以通过调用下面两个方法的其中之一,来获取相应的目录 文件 : getFilesDir()     返回一个表示你应用的内部路径的...为了在这些目录中的一个里面创建一个新的文件,你可以使用 File() 构造器,传入由上述指定了你的内部存储路径的方法提供的 File ....这回返回外部存储上你的应用的私有路径的根路径 . 请记住当用户卸载你的应用时,getExternalFilesDir() 在一个路径中创建的路径都会被删除掉 ....这些方法分别提供了存储卷中当前有多少可用空间以及总空间. 这种信息在避免填充的数据量超过一定的阈值时也同样有用 .

    2.7K30

    Android自动化测试探索(五)代码覆盖率统计

    注意每次测试完先返回手机桌面把程序退到后台等几秒让app自己生成日志文件 下面开始讲步骤 步骤1:拉取项目代码 git clone XXXXXXXXXXX 步骤2:使用Android Studio打开项目...,文件夹及文件名称都要一一对应,不可粗心输错; 注意以上注释的位置,每一个配置务必加上以保证检测代码覆盖率的实现; 步骤4:确认APP有开启文件读写权限 在AndroidManifest.xml中添加...name="android.permission.WRITE_EXTERNAL_STORAGE" /> 步骤5:在项目的BaseActivity Class中添加以下代码: 这里不一定都叫BaseActivity...); //在SDcard根目录下生产检测报告,文件名自定义 Object agent = Class.forName("org.jacoco.agent.rt.RT").getMethod...(注意: 这里不同的项目可能install目录下的名称不一样, 选择自己需要的安装脚本) 步骤8:运行自动化测试用例或手工用例 注意没运行完一个case需要把手机返回桌面等几秒,不要杀掉APP进程 并在手机文件根目录下找到

    1.2K40

    Android 存储空间的最佳实践

    在 Android 11 上运行 使用以下方法: 使用 MediaStore.createWriteRequest() 或 MediaStore.createTrashRequest() 为应用的写入或删除请求创建待定...迁移应用数据 当您的应用已经做好迁移的准备时,使用以下方法: 检查您应用在工作中是否使用了位于 /sdcard/ 目录或其任何子目录中的文件; 将应用的所有私有文件从现在的 /sdcard/ 下的目录中移动至... getExternalFilesDir() 方法所返回的目录中; 将所有共享的非媒体文件从现在的 /sdcard/ 下的目录中移动至 /sdcard/ 目录下的一个应用专用子目录; 从 /sdcard...-- 该属性在目标 API 为 Android 10 或更高版本的应用中默认为 "false" --> android:requestLegacyExternalStorage...为了测试目标 API 为 Android 9 及更低版本的应用在使用分区存储时的行为,您可以通过设置 requestLegacyExternalStorage 的值设置为 false 来使应用选择启用行为

    1.7K10
    领券