Firemonkey(RAD Studio11)开发Android应用:文件存储路径查找求助
Firemonkey(RAD Studio 11)Android应用文件存储位置排查
问题描述
使用Firemonkey(RAD Studio 11)开发Android应用,通过以下代码存储文件,编译及模拟器运行正常,但在/data/data/<com.myproject>/files目录、SD卡及PC端均无法找到目标文件:
UnicodeString TestPath = System::Ioutils::TPath::GetDocumentsPath(); Prueba = "7=5:0:6=?=<9>5>9<7:" TStreamWriter* File = new TStreamWriter(new TFileStream(TestPath+"/proof.txt", fmCreate), TEncoding::UTF8, 1024); for(int b=1;b<Prueba.Length();b++) { File->Write(Prueba.SubString(b,1)); } File->WriteLine(); File->Flush(); File->Close(); delete File->BaseStream; delete File;
文件位置说明及查找方法
- 实际存储路径:
TPath::GetDocumentsPath()在Android系统中指向应用的私有沙箱目录,具体路径为/data/user/0/<你的应用包名>/files。你之前查看的/data/data/<com.myproject>/files是该路径的软链接,部分模拟器或设备可能不会直接显示软链接的内容。 - 模拟器中查找方法:
- 使用Android Studio的Device File Explorer,直接导航到
/data/user/0/<你的应用包名>/files目录即可找到proof.txt; - 通过ADB命令操作:
- 查看文件是否存在:
adb shell run-as <你的应用包名> ls /data/user/0/<你的应用包名>/files - 将文件拉取到PC本地:
adb pull /data/user/0/<你的应用包名>/files/proof.txt ./本地保存路径
- 查看文件是否存在:
- 使用Android Studio的Device File Explorer,直接导航到
- 实体手机中查找限制:由于Android的沙箱机制,未root的手机无法直接通过文件管理器访问该私有目录。如果需要在手机文件管理器中可见,可修改代码将文件写入公共存储目录:
- 使用
TPath::GetPublicDocumentsPath()替换TPath::GetDocumentsPath(),该路径对应手机文件管理器的「文档」目录; - 注意需在
AndroidManifest.xml中申请存储权限(Android 10及以上需适配分区存储,Android 13+需对应媒体权限)。
- 使用
代码小提示
你的循环条件b<Prueba.Length()会漏掉字符串的最后一个字符,建议修改为b<=Prueba.Length()以保证内容完整写入。
内容的提问来源于stack exchange,提问作者neg1414
相关产品推荐
相关产品推荐

