Androidデバイス、Delphi(XE5、Firemonkey)を使用して)ファイルをローカルに保存するにはどうすればよいですか?
簡単なもの
Memo.Lines.SaveToFile('test.txt')
動作していないようです。その結果、次のエラーメッセージが表示されます。
「ファイル「/test.txt」を作成できません。ディレクトリではありません。」
ドキュメントに従って Android App を作成して、次のようにドキュメントパスを取得します。
System.IOUtils.TPath.GetDocumentsPath + System.SysUtils.PathDelim + 'myfile';
System.SysUtils.PathDelim
を使用する代わりに、
System.IOUtils.TPath.Combine(System.IOUtils.tpath.getdocumentspath,'test.txt');
Combine
は、ウィンドウ\
とLinux /
のどちらかを選択します
System.IOUtils
は、おそらくより多くのTpathイニシャルがあるため、uses句で設定する代わりに、この行で使用する必要があります。
GetHomePath、パスを含む文字列を返します。 -> 'data/data // files'
あなたが使用することができます:
Memo.Lines.SaveToFile(format('%s/test.txt', [GetHomePath]));
またはこのフォーム
Memo.Lines.SaveToFile(GetHomePath + '/test.txt');
私のデバイス(そしておそらくすべてのAndroidデバイス?))GetHomePathは/ storage/emulated/0/...を誤って与えますUSB経由でWindowsエクスプローラに表示されます。
だから私のファイルへのフルパスは '/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を変更します
Filesフォルダーは、再コンパイルしてデプロイするたびに空になることに注意してください。