【Android 开发】模拟器上的/storage/emulated/0 上创建目录

news/2025/3/16 6:28:09/

Android创建文件夹失败的原因及解决方法
在Android开发中,经常会遇到创建文件夹的需求,但有时候我们可能会遇到创建文件夹失败的情况。本文将介绍一些常见的原因,并提供相应的解决方法。

常见原因

1.权限问题

Android系统对于文件系统的访问有一些限制,如果你的应用没有获取到适当的权限,那么创建文件夹的操作将会失败。在AndroidManifest.xml文件中,你需要添加相应的权限声明来获取文件系统的访问权限。

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

2.目录路径错误

创建文件夹时,需要指定正确的目录路径。如果你提供了错误的路径,那么系统将无法找到要创建文件夹的位置,从而导致创建失败。请确保你提供的路径是有效的。

目录已存在
如果你尝试在已存在的目录中创建同名的文件夹,那么操作将会失败。在创建文件夹之前,你可以先检查目录是否已存在,如果已经存在,则可以避免重复创建。

File directory = new File("/sdcard/myfolder");
if (!directory.exists()) {if (directory.mkdirs()) {// 文件夹创建成功} else {// 文件夹创建失败}
} else {// 目录已存在
}

3.存储空间不足

在一些情况下,如果设备的存储空间不足,那么创建文件夹的操作将会失败。在创建文件夹之前,你可以检查设备的存储空间是否充足,若不足则提醒用户释放存储空间。

long availableSpace = Environment.getExternalStorageDirectory().getUsableSpace();
if (availableSpace < REQUIRED_SPACE) {// 存储空间不足
}

解决方法

4动态申请权限

如果你的应用在Android 6.0以上的版本中运行,你需要在运行时动态申请权限。你可以使用以下代码来检查并请求权限。

if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED) {// 权限未授予,需要请求权限ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},REQUEST_CODE);
} else {// 权限已授予,可以进行文件夹创建操作
}

5.使用正确的目录路径

确保你提供的目录路径是正确的。你可以使用以下代码来获取常用的外部存储目录路径。

String externalStorageDirectory = Environment.getExternalStorageDirectory().getAbsolutePath();

处理目录已存在的情况
在创建文件夹之前,先检查目录是否已存在。如果已存在,你可以选择跳过创建操作或采取其他措施。
提示用户释放存储空间

6.安卓10出现问题,回滚权限

可以在manifest文件中的标签下加上这个属性: android:requestLegacyExternalStorage=“true” 这是因为Android10.0改变了文件的存储方式,加这个属性是启用旧的存储方式。 如果是正式项目的话建议使用存储访问框架(SAF)去做文件操作

    <applicationandroid:name=".AndroidApp"android:theme="@style/UnityThemeSelector"android:icon="@mipmap/app_icon"android:label="@string/app_name"android:directBootAware="true"android:hardwareAccelerated="true"android:requestLegacyExternalStorage="true"></application>
作为备忘记录。

http://www.ppmy.cn/news/1424389.html

相关文章

Apache Zeppelin 命令执行漏洞复现(CVE-2024-31861)

0x01 产品简介 Apache Zeppelin 是一个让交互式数据分析变得可行的基于网页的开源框架&#xff0c;Zeppelin提供了数据分析、数据可视化等功能&#xff0c; 0x02 漏洞概述 Apache Zeppelin 中代码生成控制不当&#xff08;“代码注入”&#xff09;漏洞。攻击者可以使用 She…

【网站项目】摄影竞赛小程序

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

数据结构:线性表

P3156 【深基15.例1】询问学号 题目描述 有n(n≤2106) 名同学陆陆续续进入教室。我们知道每名同学的学号&#xff08;在 1到 10^9 之间&#xff09;&#xff0c;按进教室的顺序给出。上课了&#xff0c;老师想知道第 i 个进入教室的同学的学号是什么&#xff08;最先进入教室…

c++中什么叫做窄式转换(narrowing conversions)以及窄式转换解决方案

c中什么叫做窄式转换(narrowing conversions)以及窄式转换解决方案 什么叫做窄式转换(narrowing conversions) 窄化转换&#xff08;narrowing conversion&#xff09;是指将一个值转换为另一种类型&#xff0c;但转换过程中丢失了信息或超出了目标类型的表示范围的情况。在C…

基于afx透明视频的视觉增强前端方案

作者 | 青玉 导读 本文介绍了增长前端团队自研的Webview框架下透明视频视觉增强方案&#xff0c;该方案在保证对视觉进行高度还原的同时可投入更少的开发成本&#xff0c;还能获得更优的前端性能表现。文章首先分析了市面上动画方案的优缺点&#xff0c;然后详细介绍了透明视频…

【AcWing】蓝桥杯集训每日一题Day32|贪心|1349.修理牛棚

1349.修理牛棚 1349. 修理牛棚 - AcWing题库难度&#xff1a;中等时/空限制&#xff1a;1s / 64MB总通过数&#xff1a;1275总尝试数&#xff1a;2405来源&#xff1a;usaco training 1.4算法标签贪心 题目内容 在一个下着暴风雨的夜晚&#xff0c;大风掀翻了农夫约翰的牛棚的…

Spring Boot 2.x 将 logback 1.2.x 升级至 1.3.x

场景 安全部门针对代码进行漏洞扫描时&#xff0c;发现 logback-core 和 logback-classic 都属于 1.2.x 版本&#xff0c;这个版本存在 CVE 漏洞&#xff0c;并且建议升级到 1.3.x 版本。 问题 将两个包直接升级到 1.3.x 版本时&#xff0c;Spring Boot Web 服务启动直接出现…

OpenHarmony轻量系统开发【1】初始OpenHarmony

1.1系统类型 OpenHarmony是由开放原子开源基金会&#xff08;OpenAtom Foundation&#xff09;孵化及运营的开源项目&#xff0c;目标是面向全场景、全连接、全智能时代&#xff0c;基于开源的方式&#xff0c;搭建一个智能终端设备操作系统的框架和平台&#xff0c;促进万物互…