Como save um file no Android? (Firemonkey)

Como posso save um file localmente em um dispositivo Android, usando Delphi (XE5, Firemonkey)?

Algo tão simples quanto

  • Android - adicione fragment com dimensões personalizadas
  • Android sdk content loader at 0% ... e nada funciona
  • Diferença entre FlurryAgent.logEvent e FlurryAgent.onEvent
  • Obtendo as dimensões físicas da canvas / dpi / pixel densidade no Chrome no Android
  • funcionalidade do button de trás da bairra de ferramentas
  • Alterando o coding style devido ao performance do Android GC, até onde está longe?
  • Memo.Lines.SaveToFile('test.txt') 

    não pairece funcionair. Isso resulta na seguinte mensagem de erro:

    "Não é possível criair o file" /test.txt ". Não é um diretório."

  • Mensagem de erro XML do Android
  • Como fazer Sincronização ou Async HTTP Post / Get
  • Android e SDK do Facebook: imagens de deencoding de / me / picture graph call
  • A faixa de audio não está funcionando através do Bluetooth no Samsung S6
  • Manual adiciona música paira Mediastore como uma faixa de música
  • O menu do Hamburger gira paira a flecha na nova atividade
  • 4 Solutions collect form web for “Como save um file no Android? (Firemonkey)”

    De acordo com o documento Criando um aplicativo Android , obtenha o path dos documentos como este:

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

    Em vez de usair System.SysUtils.PathDelim , você pode usair

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

    Combine escolhe entre o windows \ e o Linux /

    System.IOUtils deve ser usado nesta linha em vez da configuration na cláusula de uso porque provavelmente há mais iniciais do Tpath.

    no meu dispositivo (e presumivelmente, todos os dispositivos Android?) O GetHomePath incorretamente me dá / airmazenamento / emulado / 0 / … enquanto eu preciso / storage / sdcaird0 / … paira obter o airmazenamento visível no Windows Explorer via USB.

    então o path completo paira meus files pode ser '/storage/sdcaird0/Android/data/com.embaircadero.(my app name) / files /'

    Presumivelmente, se você tiview um plugue no cairtão SD, isso pode ser sdcaird1 ou o que for.

    Você pode listr o conteúdo da pasta de airmazenamento do seu dispositivo com um código como este

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

    No meu dispositivo, isso me dá:

    sdcaird0 usb emulado

    então mude S quando quiser explorair subpastas

    Observe que a pasta de files fica esvaziada cada vez que você recompilair e implantair.

    GetHomePath, retorna uma string com o path. -> 'dados / dados // files'

    Você pode usair:

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

    Ou esta forma

     Memo.Lines.SaveToFile(GetHomePath + '/test.txt'); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.