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

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)去做文件操作

    <application
	  android: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>
作为备忘记录。

错误:Traceback (most recent call last): File "/data/user/0/com.cscjapp.python/files/aarch64-linux-android/lib/python3.11/site-packages/graphviz/backend/execute.py", line 78, in run_check proc = subprocess.run(cmd, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/data/user/0/com.cscjapp.python/files/aarch64-linux-android/lib/python3.11/subprocess.py", line 548, in run with Popen(*popenargs, **kwargs) as process: ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/data/user/0/com.cscjapp.python/files/aarch64-linux-android/lib/python3.11/subprocess.py", line 1028, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "/data/user/0/com.cscjapp.python/files/aarch64-linux-android/lib/python3.11/subprocess.py", line 1950, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename) FileNotFoundError: [Errno 2] No such file or directory: PosixPath('dot') The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/data/user/0/com.cscjapp.python/files/ide_files/ide_run.py", line 31, in <module> start(fakepyfile,mainpyfile) File "/data/user/0/com.cscjapp.python/files/ide_files/ide_run.py", line 30, in start exec(open(mainpyfile).read(), __main__.__dict__) File "<string>", line 73, in <module> File "/data/user/0/com.cscjapp.python/files/aarch64-linux-android/lib/python3.11/site-packages/graphviz/_tools.py", line 171, in wrapper return func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/data/user/0/com.cscjapp.python/files/aarch64-linux-android/lib/python3.11/site-packages/graphviz/rendering.py", line 122, in render rendered = self._render(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/data/user/0/com.cscjapp.python/files/aarch64-linux-android/lib/python3.11/site-packages/graphviz/_tools.py", line 171, in wrapper return func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/data/user/0/com.cscjapp.python/files/aarch64-linux-android/lib/python3.11/site-packages/graphviz/backend/rendering.py", line 326, in render execute.run_check(cmd, File "/data/user/0/com.cscjapp.python/files/aarch64-linux-android/lib/python3.11/site-packages/graphviz/backend/execute.py", line 81, in run_check raise ExecutableNotFound(cmd) from e graphviz.backend.execute.ExecutableNotFound: failed to execute PosixPath('dot'), make sure the Graphviz executables are on your systems' PATH /storage/emulated/0/Android/data/com.cscjapp.python/files/CJ_IDE/PythonProject/默认目录/Helloworld/src $
最新发布
03-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值