Delphi - Android - 将文本文件保存到内部存储器

Delphi - Android - Saving textfile to internal storage

我对 Android 开发还很陌生。 我想开发一个应用程序,能够将文本文件保存在内部存储中(在应用程序的私人文件夹或类似的文件夹中)。

我有以下代码:

    procedure TfrmMain.Button1Click(Sender: TObject);
    var
      tstrTmp: TStringList;
      sFn: String;
    begin
      tstrTmp := TStringList.Create;
      tstrTmp.Text := 'Test';
      sFn := Format( '%s/Test.txt', [GetHomePath ]);
      sFn := System.IOUtils.TPath.GetDocumentsPath + System.SysUtils.PathDelim + 'Test.txt';
      sFn := TPath.Combine( System.IOUtils.TPath.GetDocumentsPath , 'Test.txt' );
      tstrTmp.SaveToFile( sFn );
      tstrTmp.Free;
      showmessage( sFn );
    end;

当我 运行 应用程序并单击按钮时,它会显示:'/data/user/0/com.embarcadero.[MyAppName]/files/Test.txt'。 因此,我会假设该文件已物理写入该位置。

但是当我将我的设备连接到我的电脑时,我什至找不到这个文件夹。 我还搜索了外部存储,但找不到此文件夹或文件 (Test.txt)。

我确实在我的内部存储上找到了一个文件夹:/Android/data/com.embarcadero.[MyAppName]/files,但是里面没有文件。

所以,我有点卡在这里,因为我假设文件保存在某个地方。 但是我找不到它。

我是不是做错了什么? 感谢您的反馈。

此致,

维姆

因此,解决方案是: 为存储设置 App-Permisisons(设置 - 应用程序 - MyApp - 权限 - 存储)。

完成此操作后,使用 TPath.GetPublicPath 存储文件会在设备(内部存储)上生成一个文件:/storage/emulated/0/Android/data//files 其中 '/storage/emulated/0' = 我设备内部存储的根文件夹。

如果您担心设备之间的内部根路径会发生变化,您可以试试这个

AppPath := ReplaceStr(System.IOUtils.TPath.GetSharedDownloadsPath,'/Download','');

会给你你想要的,所以你不必担心它是“/storage/emulated/0”还是其他东西。