Android变声器开发调用new File()找不到文件,如何定位存储目录?
test.pcm存储路径说明及查找方案
1. 代码对应默认存储路径
你代码中调用Environment.getExternalStorageDirectory()指向的是安卓设备内置存储的根目录,对应文件系统的绝对路径为/storage/emulated/0/,理论上生成的test.pcm直接存放在根目录下,不会进入任何二级子文件夹。
2. 找不到文件的核心原因
你贴出的代码只有读取test.pcm的逻辑,没有任何将录音数据写入生成该文件的代码,首先请确认你已经单独实现了pcm文件的写入逻辑,排除文件本身不存在的情况。如果已经实现写入逻辑仍找不到,基本是权限和系统版本限制导致写入失败:
- 安卓6.0~安卓9:需要动态申请
READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE权限,仅在AndroidManifest中声明无效,未授权的情况下写入操作会被系统拦截,文件不会生成。 - 安卓10及以上:谷歌引入了分区存储机制,
Environment.getExternalStorageDirectory()被废弃,普通应用默认无法直接写入内置存储根目录,就算申请了旧的存储权限也无法写入,因此文件不会生成。
3. 查找文件的方法
- 安卓9及更低版本,且已经授予存储权限:打开系统自带文件管理器,进入「内部存储」根目录,直接按文件名搜索
test.pcm即可找到。 - 安卓10及以上版本:
- 临时方案:在AndroidManifest中添加
MANAGE_EXTERNAL_STORAGE权限,引导用户手动开启「所有文件访问权限」后,写入的文件仍会出现在内置存储根目录。 - 合规方案:将存储路径替换为应用专属外部存储目录,代码修改为
File file = new File(getExternalFilesDir(null), "test.pcm");,该路径无需额外申请权限即可读写,对应文件存放位置为「内部存储/Android/data/你的应用包名/files/」,进入对应路径即可找到文件。
- 临时方案:在AndroidManifest中添加
- 开发阶段可以直接打开Android Studio的Device File Explorer,进入
/storage/emulated/0/目录直接搜索对应文件,无需在手机端操作。
内容的提问来源于stack exchange,提问作者Abdellah SAYOUL
相关产品推荐
相关产品推荐

