安桌15系统文件直接存到其他目录要权限吗/storage/emulated/0/Download要权限而且 Android 15 不允许直接用路径读写 /storage/emulated/0/Download。download目录算时半公开允许写入吧再上一层手工创建的ABC目录要有什么区别搜索 2 个关键词参考 11 篇资料先把结论说清楚Android 15 / API35/storage/emulated/0/Download是系统预定义公共目录属于 “半公开可写”——不能直接new File(path)写但可以用MediaStore.Downloads写入不需要 MANAGE_EXTERNAL_STORAGE。/storage/emulated/0/ABC你自己建的属于根目录下自定义文件夹——默认完全禁止直接读写想直接new File(/storage/emulated/0/ABC/xxx)必须要 MANAGE_EXTERNAL_STORAGE所有文件访问权限。下面拆开讲区别。一、Download 目录“半公开、有优待”路径/storage/emulated/0/Download性质系统标准公共目录和 DCIM、Pictures、Movies 一类。所有应用、用户都能看到卸载 App不会删。Android 15 写入规则❌ 不能直接用路径java运行new File(/storage/emulated/0/Download/a.txt) // 失败✅ 允许用MediaStore写入不需要 “所有文件权限”java运行ContentValues valuesnew ContentValues(); values.put(MediaStore.Downloads.DISPLAY_NAME, a.txt); Uri urigetContentResolver().insert( MediaStore.Downloads.EXTERNAL_CONTENT_URI, values); // 然后 openOutputStream 写数据权限只要普通存储读取权限即可不用 MANAGE_EXTERNAL_STORAGE。一句话Download 是系统 “白名单公共目录”允许通过官方 API 写入不用全开存储权限。二、根目录下手工建的 ABC“完全私有 / 受限”路径/storage/emulated/0/ABC你自己 mkdir 的性质不属于系统预定义公共目录属于外部存储根目录下的自定义目录。对 Android 10 Scoped Storage 来说这类目录是未授权区域。Android 15 写入规则❌默认完全不能直接读写java运行new File(/storage/emulated/0/ABC/b.txt) // 无权限报错✅ 只有一种办法申请 MANAGE_EXTERNAL_STORAGExmluses-permission android:nameandroid.permission.MANAGE_EXTERNAL_STORAGE/并引导用户在设置里手动打开 “允许访问所有文件”。打开后你可以像老安卓一样随便读写 /ABC、/Download、/Pictures 等所有目录。一句话根目录自建 ABC不在系统白名单里默认禁止直接访问要访问必须开 “所有文件权限”。三、对比表一眼看懂表格目录/storage/emulated/0/Download/storage/emulated/0/ABC自建类型系统预定义公共目录根目录自定义目录Android15 直接 File 读写❌ 禁止❌ 禁止MediaStore 写入✅ 允许不用特殊权限❌ 不支持需 MANAGE_EXTERNAL_STORAGE❌ 不需要✅必须要卸载 App 删除文件❌ 不删❌ 不删四、你实际开发怎么选只想放下载类文件 →用 MediaStore 写 Download最简单、不用特殊权限。一定要在根目录建自己的文件夹/ABC→必须要 MANAGE_EXTERNAL_STORAGE并做好用户授权引导。只是 App 自己用、不想被别的 App 乱看 → 用App 私有目录/Android/data/包名/files/无需权限卸载自动删。如果你愿意我可以给你两套完整可直接运行的代码不用特殊权限往 Download 写文件MediaStore申请 MANAGE_EXTERNAL_STORAGE往 /ABC 写文件一、先说结论Android 15API 35普通第三方 App❌ 不能直接用new File(/storage/emulated/0/Download/xxx)去创建 / 写入。✅ 必须用MediaStore API或SAF存储访问框架。权限情况WRITE_EXTERNAL_STORAGE已失效只对 Android 10 以下有用。公共下载目录属于共享存储默认不能随便写。想 “完全自由读写所有目录”需要MANAGE_EXTERNAL_STORAGE所有文件访问权限用户手动在设置里开启。二、/storage/emulated/0/Download 本质这是系统公共下载目录属于Scoped Storage分区存储管控范围Android 10引入可关闭Android 11强制开启Android 15进一步收紧禁止直接路径访问公共目录三、你要往 Download 存文件正确做法二选一方案 A用 MediaStore推荐无需 MANAGE_EXTERNAL_STORAGEjava运行ContentValues values new ContentValues(); values.put(MediaStore.Downloads.DISPLAY_NAME, test.txt); values.put(MediaStore.Downloads.MIME_TYPE, text/plain); // Android 10 不用写 RELATIVE_PATH 也能进 Download Uri uri getContentResolver().insert(MediaStore.Downloads.EXTERNAL_CONTENT_URI, values); // 然后 openOutputStream 写入数据权限不需要 WRITE_EXTERNAL_STORAGE结果文件直接出现在 Download 目录方案 B要 “像以前一样随便写”声明权限xmluses-permission android:nameandroid.permission.MANAGE_EXTERNAL_STORAGE /代码判断并引导用户开启java运行if (!Environment.isExternalStorageManager()) { Intent intent new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION, Uri.parse(package: getPackageName())); startActivity(intent); }开启后可以直接用 File 读写 /storage/emulated/0/Download和其他目录。四、一句话总结Android 15/storage/emulated/0/Download 要权限且默认不让直接路径写要么用 MediaStore要么让用户开 “所有文件访问权限”。要不要我给你一段可直接复制运行的 MediaStore 写入 Download 的完整示例含动态权限和异常处理