簡體   English   中英

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,但里面沒有文件。

所以,我有點卡在這里,因為我認為文件保存在某個地方。 但我找不到它。

我在這里做錯了嗎? 感謝您的反饋意見。

此致,

維姆。

因此,解決方案是:設置存儲的應用程序權限(設置 - 應用程序 - 我的應用程序 - 權限 - 存儲)。

完成此操作后,使用 TPath.GetPublicPath 存儲文件會在設備(內部存儲)上生成一個文件:/storage/emulated/0/Android/data//files Where '/storage/emulated/0' =我的設備內部存儲的根文件夾。

如果您擔心設備之間的內部根路徑是否發生變化,您可以試試這個

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

會給你你想要的,所以你不必擔心它是 '/storage/emulated/0' 還是其他東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM