Skip to content Skip to sidebar Skip to footer

How To Save A File On Android? (firemonkey)

How can I save a file locally on an Android device, using Delphi (XE5, Firemonkey)? Something as simple as Memo.Lines.SaveToFile('test.txt') does not seem to work. It results in

Solution 1:

According to the document Creating an Android App, get the documents path like this:

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

Solution 2:

Instead of using System.SysUtils.PathDelim, you may use

System.IOUtils.TPath.Combine(System.IOUtils.tpath.getdocumentspath,'test.txt');

Combine chooses between the windows \ and the Linux /

System.IOUtils must be used in this line instead of setup in the uses clause because there are probably more Tpath initials.

Solution 3:

GetHomePath, return a string with the path. -> 'data/data//files'

You can to use:

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

Or this form

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

Solution 4:

on my device (and presumably all android devices?) GetHomePath incorrectly gives me /storage/emulated/0/... whereas I need /storage/sdcard0/... to get to the storage visible in Windows Explorer via USB.

so the full path to my files may be '/storage/sdcard0/Android/data/com.embarcadero.(my app name)/files/'

Presumably if you have a plug in SD card this might be sdcard1 or whatever.

You can list the contents of your device storage folder with code like this

  P := '/storage/';
  if (FindFirst(P + '*', faAnyFile, Sr) = 0) thenrepeat
    Memo1.Lines.Add(Sr.Name);
  until (FindNext(Sr) <> 0);
  FindClose(Sr);

On my device this gives me:

sdcard0 usb emulated

then change S when you want to explore subfolders

Note that the files folder gets emptied each time you recompile and deploy.

Post a Comment for "How To Save A File On Android? (firemonkey)"