You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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是该路径的软链接,部分模拟器或设备可能不会直接显示软链接的内容。
  • 模拟器中查找方法:
    1. 使用Android Studio的Device File Explorer,直接导航到/data/user/0/<你的应用包名>/files目录即可找到proof.txt;
    2. 通过ADB命令操作:
      • 查看文件是否存在:
        adb shell run-as <你的应用包名> ls /data/user/0/<你的应用包名>/files
        
      • 将文件拉取到PC本地:
        adb pull /data/user/0/<你的应用包名>/files/proof.txt ./本地保存路径
        
  • 实体手机中查找限制:由于Android的沙箱机制,未root的手机无法直接通过文件管理器访问该私有目录。如果需要在手机文件管理器中可见,可修改代码将文件写入公共存储目录:
    • 使用TPath::GetPublicDocumentsPath()替换TPath::GetDocumentsPath(),该路径对应手机文件管理器的「文档」目录;
    • 注意需在AndroidManifest.xml中申请存储权限(Android 10及以上需适配分区存储,Android 13+需对应媒体权限)。

代码小提示

你的循环条件b<Prueba.Length()会漏掉字符串的最后一个字符,建议修改为b<=Prueba.Length()以保证内容完整写入。

内容的提问来源于stack exchange,提问作者neg1414

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 13:36:04