如何在Android上保存文件? (Firemonkey)

时间:2013-09-17 19:07:17

标签: android delphi firemonkey

如何在Android设备上本地保存文件, 使用Delphi(XE5,Firemonkey)?

这样简单
  Memo.Lines.SaveToFile('test.txt')

似乎不起作用。 它会导致以下错误消息:

“无法创建文件”/test.txt“。不是目录。”

4 个答案:

答案 0 :(得分:15)

根据文档Creating an Android App,获取文档路径:

System.IOUtils.TPath.GetDocumentsPath + System.SysUtils.PathDelim + 'myfile';

答案 1 :(得分:9)

您可以使用

,而不是使用System.SysUtils.PathDelim
System.IOUtils.TPath.Combine(System.IOUtils.tpath.getdocumentspath,'test.txt');

Combine在Windows \和Linux /

之间进行选择

System.IOUtils必须在此行中使用,而不是在uses子句中使用,因为可能有更多的Tpath首字母。

答案 2 :(得分:1)

在我的设备上(可能是所有Android设备?)GetHomePath错误地给我/ storage / emulated / 0 / ...而我需要/ storage / sdcard0 / ...来通过USB访问Windows资源管理器中可见的存储

所以我的文件的完整路径可能是 '/storage/sdcard0/Android/data/com.embarcadero.(my app name)/ files /'

大概如果你有SD卡插头,这可能是sdcard1或其他什么。

您可以使用此代码

列出设备存储文件夹的内容
  P := '/storage/';
  if (FindFirst(P + '*', faAnyFile, Sr) = 0) then
  repeat
    Memo1.Lines.Add(Sr.Name);
  until (FindNext(Sr) <> 0);
  FindClose(Sr);

在我的设备上,这给了我:

sdcard0 USB 模拟

然后在想要浏览子文件夹时更改S

请注意,每次重新编译和部署时,files文件夹都会被清空。

答案 3 :(得分:0)

GetHomePath,返回带路径的字符串。 - &GT; '数据/数据文件//'

您可以使用:

Memo.Lines.SaveToFile(format('%s/test.txt', [GetHomePath]));

或者这个表格

Memo.Lines.SaveToFile(GetHomePath + '/test.txt');