アプリが内部メモリに書き込むときのデフォルトの「ホーム」ディレクトリに関する簡単な質問。デフォルトでは、作成されたファイルはすべてOS(2.2)によって次の場所に配置されます。
_/data/data/your.package/files
_
ファイルを読み込むとき、openFileInput()
、openFileOutput()
を介して適切なコンテキストを維持するとき、同じデフォルトが使用されます。ただし、たとえばFileクラスを使用してファイルの存在を確認する必要がある場合は、コンストラクターでパス全体を指定する必要があります。
Environment.getDataDirectory()
(_/data
_を返す)、Environment.getRootDirectory()
(_/system
_を返す)などがありますが、アプリの「ホーム」ディレクトリの取得に関連するものはありません。
それは大したことではありませんが、参照する方法がある場合は、使用するApp for Fileにフルパスをハードコーディングしないでください(パッケージ名の変更、将来のOSリリースでのパスの変更など)プログラムでアプリの「ホーム」ディレクトリ。
もちろん、失敗することはありません。上記の質問を投稿してから約1分後に解決策を見つけました...同じ問題が発生した可能性のある人のための解決策:
ContextWrapper.getFilesDir()
見つかった ここ 。
パッケージの永続データフォルダーが必要な場合は、Context.getApplicationInfo().dataDir
を試すことができます。
getFilesDir()
は、このサブルートを返します。
アプリケーションパッケージ内のファイルのパスを取得するには、
ContextWrapper c = new ContextWrapper(this);
Toast.makeText(this, c.getFilesDir().getPath(), Toast.LENGTH_LONG).show();