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”还是其他东西。
我对 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”还是其他东西。