uniapp手机根目录
uniapp手机根目录的获取方法
在uniapp开发中,获取手机根目录(即外部存储的根路径)需要使用特定API,不同平台(Android/iOS)的路径可能不同。
Android平台根目录路径
通过plus.io模块获取外部存储目录:
var rootPath = plus.android.invoke(plus.android.importClass("android.os.Environment"), "getExternalStorageDirectory");
console.log(rootPath); // 输出如:/storage/emulated/0
iOS平台根目录路径 iOS沙盒机制限制下,可通过以下方式获取Documents目录(近似根目录):
var rootPath = plus.ios.invoke(plus.ios.invoke("NSSearchPathForDirectoriesInDomains", 14, 1, true), "objectAtIndex", 0);
console.log(rootPath); // 输出如:/var/mobile/Containers/Data/Application/xxx/Documents
跨平台兼容方案
使用uniapp的uni.getFileSystemManager()实现统一访问:
const fs = uni.getFileSystemManager();
fs.readdir({
dirPath: '/',
success: (res) => {
console.log('根目录内容:', res.files);
}
});
注意事项
- Android需在manifest.json中声明存储权限:
"permission": { "android.permission.READ_EXTERNAL_STORAGE": {}, "android.permission.WRITE_EXTERNAL_STORAGE": {} } - iOS无权限申请但只能访问沙盒内目录
- 真机调试时Android 11+需适配Scoped Storage
常用文件操作API
读取目录内容
uni.getFileSystemManager().readdir({
dirPath: '/storage/emulated/0',
success: (res) => console.log(res)
});
写入文件示例
const filePath = '/storage/emulated/0/test.txt';
uni.getFileSystemManager().writeFile({
filePath,
data: 'Hello World',
encoding: 'utf8',
success: () => console.log('写入成功')
});
路径常量参考
- Android外部存储:
/storage/emulated/0 - Android应用私有目录:
/data/data/[package_name] - iOS Documents目录:
/var/mobile/Containers/Data/Application/[UUID]/Documents
实际开发中建议使用plus.io或uni.getFileSystemManager()进行跨平台文件操作,避免直接硬编码路径。







