2013-12-14 47 views
3

我正在使用Delphi XE5進行Android開發。DELPHI XE5 Android - 從SDCard保存/加載文件

我喜歡將TStringList保存並加載到SDCard上的文本文件。 當我保存TStringList到文件一切正常。保存後,我可以調用LoadFromFile並加載文件。

問題是當我關閉應用程序並再次打開它時。文件不存在? 這是文件的位置FileName := '/data/data/[com.MY.APP]/files/File.txt'

在應用程序的用戶權限= 寫外部stoage:真

我需要將文件保存到另一個文件夾?

Thx尋求幫助。

這在我的代碼和設置。

procedure LOAD; 
var 
    TextFile: TStringList; 
    FileName: string; 
begin 
    TextFile := TStringList.Create; 
    try 
     FileName := Format('%s/File.txt', [GetHomePath]); 
     if FileExists(FileName) then 
     begin 
     TextFile.LoadFromFile(FileName); 
     Memo1.Lines.Text := TextFile.Text 
     end 
     else 
     ShowMessage('File not exists!'); 
    finally 
     TextFile.Free; 
    end;  

end; 

procedure SAVE; 
var 
    TextFile: TStringList; 
    FileName: string; 
begin 
    TextFile := TStringList.Create; 
    try 
     FileName := Format('%s/File.txt', [GetHomePath]); 
     TextFile.Text := Memo1.Lines.Text; 
     TextFile.SaveToFile(FileName); 
    finally 
     TextFile.Free; 
    end;  
end; 

enter image description here

enter image description here

+0

您應該使用'TPath.Combine()'而不是'Format()'。你確定SDCard路徑是以'/ data/data /'開頭的,而不僅僅是'/ data'嗎?你如何回顧HomePath?另外,爲什麼使用單獨的'TStringList'而不是使用'Memo.Lines.Load ...()'和'Memo.Lines.Save ...()'? –

+0

GetHomePath是System.SysUtils的系統函數 獨立的TStringList僅用於演示。 如果我使用/ data /我得到異常 '無法創建文件「/data/com.debersek.KKP/files/File.txt」。不是目錄'。 – xJernej

+1

你並沒有在SD卡附近的任何地方保存。看到我的答案[這裏](http://stackoverflow.com/a/18857868/62576)。 –

回答

3

是,

AppPath := TPath.GetHomePath; 
FileName := TPath.Combine(AppPath, 'File.txt'); 

工作正常。 不要忘記將單位System.IOUtils添加到您的使用條款中。

謝謝xJernej。

相關問題