android sd卡存储使用实例

目录

申请权限:

sdcard路径替代:

视频目录

写文件示例:


申请权限:

XML 复制代码
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:requestLegacyExternalStorage="true"

sdcard路径替代:

/storage/emulated/0

相当于 /sdcard,二者指向目录相同

视频目录

Environment.DIRECTORY_MOVIES 是 Android 系统为了帮助组织媒体文件而设立的一种标准目录类型。当你调用 getExternalFilesDir(Environment.DIRECTORY_MOVIES) 方法时,系统会返回一个指向应用专用的,用于存储电影和其他类似媒体文件的文件夹的 File 对象。

写文件示例:

java 复制代码
    String path = "/storage/emulated/0/Android/data/com.codec.cameraframetest/files/DCIM/" + log_file ;
                        File dir = new File(Environment.getExternalStorageDirectory(), "aaaa");
                        if (!dir.exists()) {
                            dir.mkdir();
                        }

                        // 在 'aaa' 目录下创建 'log.txt' 文件
                        File logFile = new File(path);
                        if (!logFile.exists()) {
                            logFile.createNewFile();
                        }

                        FileOutputStream fileOutputStream = new FileOutputStream(logFile, true);
                        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "UTF-8");

                        outputStreamWriter.write(index+" test\n");
                        outputStreamWriter.flush();
                        outputStreamWriter.close();

如果保存在其他目录,会检索加入图库,生成缩略图导致保存视频慢吗

如果你将视频文件保存在其他目录,特别是在公共目录(如 Environment.DIRECTORY_DCIMEnvironment.DIRECTORY_PICTURES),那么这些文件可能会被媒体扫描器扫描并添加到设备的媒体库中。这可能会导致生成缩略图和其他元数据,这可能会消耗一些时间和系统资源。

然而,这种影响通常不会导致保存视频文件明显变慢。媒体扫描器通常在文件被写入磁盘后异步运行,不会阻塞写入操作。然而,如果你的应用连续写入大量的视频文件,那么媒体扫描器可能会消耗大量的CPU和I/O资源,这可能会影响设备的总体性能。

如果你不希望你的视频文件被添加到媒体库,或者你希望避免媒体扫描器的开销,你可以考虑在你的视频文件名后面添加".nomedia"后缀,或者在你的目录中创建一个名为".nomedia"的文件。这将告诉媒体扫描器忽略这个文件或目录。

请注意,从Android 10(API级别29)开始,应用默认无法直接访问设备的整个外部存储空间。如果你的应用需要将文件保存在公共目录,你可能需要使用存储访问框架(Storage Access Framework)或者媒体存储API。

相关推荐
一笑的小酒馆8 小时前
Android CameraX适配Android15
android
hnlgzb8 小时前
安卓app开发,如何快速上手kotlin和compose的开发?
android·开发语言·kotlin
alexhilton8 小时前
Jetpack Compose 2025年12月版本新增功能
android·kotlin·android jetpack
思成不止于此8 小时前
【MySQL 零基础入门】DQL 核心语法(二):表条件查询与分组查询篇
android·数据库·笔记·学习·mysql
安卓理事人13 小时前
安卓图表MpAndroidChart使用
android
奋斗的小鹰14 小时前
在已有Android工程中添加Flutter模块
android·flutter
介一安全14 小时前
【Frida Android】实战篇13:企业常用非对称加密场景 Hook 教程
android·网络安全·逆向·安全性测试·frida
lin625342215 小时前
Android右滑解锁UI,带背景流动渐变动画效果
android·ui
鹏多多17 小时前
Flutter输入框TextField的属性与实战用法全面解析+示例
android·前端·flutter
2501_9160088918 小时前
iOS 开发者工具全景图,构建从编码、调试到性能诊断的多层级工程化工具体系
android·ios·小程序·https·uni-app·iphone·webview