如何获取react-native-sqlite-storage创建的手机数据库文件路径?
解决react-native-sqlite-storage数据库文件定位问题
1. 直接从数据库实例获取路径
react-native-sqlite-storage初始化后,可直接从数据库实例拿到准确路径,这是最靠谱的方式:
import SQLite from 'react-native-sqlite-storage'; const db = SQLite.openDatabase( { name: 'your_database_name.db', location: 'default' }, () => { // 打印数据库绝对路径 console.log('数据库路径:', db._path); }, (err) => console.error('打开数据库失败:', err) );
复制打印出的路径,就能直接定位到文件。
2. 确认不同平台的默认存储目录
react-native-sqlite-storage在Android和iOS的默认存储位置不同,别找错目录:
- Android:
- 无root权限时,数据库存在
RNFS.ExternalStorageDirectoryPath + '/Android/data/[你的应用包名]/databases/' - 有root权限或通过adb访问时,路径为
/data/data/[你的应用包名]/databases/
- 无root权限时,数据库存在
- iOS:默认在
RNFS.DocumentDirectoryPath下,但若初始化时自定义了location参数,需以参数为准。
3. 排查RNFS权限配置
Android需在AndroidManifest.xml添加存储权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Android 10及以上版本,还要在<application>标签内添加:
android:requestLegacyExternalStorage="true"
iOS需在Info.plist添加权限描述:
<key>NSDocumentsFolderUsageDescription</key> <string>需要访问文档目录以复制数据库文件</string>
4. 遍历所有可能的存储目录
如果以上方法无效,可遍历RNFS提供的所有常用路径,逐一排查:
import RNFS from 'react-native-fs'; import appConfig from './app.json'; // 导入应用配置获取包名 const checkPaths = [ RNFS.DocumentDirectoryPath, RNFS.ExternalDirectoryPath, RNFS.CachesDirectoryPath, RNFS.LibraryDirectoryPath, // Android专属路径 `${RNFS.ExternalStorageDirectoryPath}/Android/data/${appConfig.name}/databases/` ]; checkPaths.forEach(async (path) => { try { const files = await RNFS.readDir(path); console.log(`目录 ${path} 下的文件:`, files.map(f => f.name)); } catch (err) { console.log(`读取目录 ${path} 失败:`, err); } });
5. 通过模拟器/设备工具直接查看
- Android模拟器:打开Android Studio的Device File Explorer,导航到
/data/data/[你的应用包名]/databases/,可直接查看或导出文件。 - iOS模拟器:打开Finder,按
Cmd+Shift+G,输入~/Library/Developer/CoreSimulator/Devices/,找到对应模拟器设备目录,再进入data/Containers/Data/Application/[应用UUID]/Documents/即可找到数据库文件。
内容的提问来源于stack exchange,提问作者riane riri
相关产品推荐
相关产品推荐

