Delphi (XE5、Firemonkey) を使用して、Android デバイスにファイルをローカルに保存するにはどうすればよいですか?
次のような単純なもの
Memo.Lines.SaveToFile('test.txt')
動作しないようです。次のエラー メッセージが表示されます。
「ファイル "/test.txt" を作成できません。ディレクトリではありません。」
Delphi (XE5、Firemonkey) を使用して、Android デバイスにファイルをローカルに保存するにはどうすればよいですか?
次のような単純なもの
Memo.Lines.SaveToFile('test.txt')
動作しないようです。次のエラー メッセージが表示されます。
「ファイル "/test.txt" を作成できません。ディレクトリではありません。」
System.SysUtils.PathDelim
を使用する代わりに、
System.IOUtils.TPath.Combine(System.IOUtils.tpath.getdocumentspath,'test.txt');
Combine
Windows\
と Linuxのどちらかを選択/
System.IOUtils
Tpath のイニシャルが他にもある可能性があるため、uses 句の setup ではなく、この行で使用する必要があります。
私のデバイス (そしておそらくすべての Android デバイス?) で、GetHomePath は誤って /storage/emulated/0/... を提供しますが、USB 経由で Windows エクスプローラーに表示されるストレージにアクセスするには /storage/sdcard0/... が必要です。
したがって、ファイルへのフル パスは「/storage/sdcard0/Android/data/com.embarcadero.(my app name)/files/」のようになります。
おそらく、プラグイン SD カードがある場合、これは sdcard1 か何かである可能性があります。
次のようなコードを使用して、デバイスのストレージ フォルダーの内容を一覧表示できます。
P := '/storage/';
if (FindFirst(P + '*', faAnyFile, Sr) = 0) then
repeat
Memo1.Lines.Add(Sr.Name);
until (FindNext(Sr) <> 0);
FindClose(Sr);
私のデバイスでは、これは私に与えます:
sdcard0 USB エミュレート
次に、サブフォルダーを探索するときに S を変更します
ファイル フォルダーは、再コンパイルしてデプロイするたびに空になることに注意してください。