53

アプリが内部メモリに書き込むときのデフォルトの「ホーム」ディレクトリに関する簡単な質問。デフォルトでは、作成されたファイルはすべてOS(2.2)によって次の場所に配置されます。

/data/data/your.package/files

openFileInput()ファイルを読み込むときは、、を介して適切なコンテキストを維持するときに、同じデフォルトが使用されますopenFileOutput()。ただし、たとえばFileクラスを使用してファイルの存在を確認する必要がある場合は、コンストラクターでパス全体を指定する必要があります。

Environment.getDataDirectory()(returns /data)、Environment.getRootDirectory()(returns )などがあります/systemが、アプリの「ホーム」ディレクトリの取得には何の関係もありません。

大したことではありませんが、ファイルを参照する方法がある場合は、使用するファイルのアプリにフルパスをハードコーディングしたくありません(パッケージ名が変更された場合、パスが将来のOSリリースで変更された場合など)。アプリの「ホーム」ディレクトリをプログラムで。

4

3 に答える 3

98

もちろん、失敗することはありません。上記の質問を投稿してから約1分後に解決策が見つかりました...同じ問題が発生した可能性のある人のための解決策:

ContextWrapper.getFilesDir()

ここで見つかりました。

于 2011-01-19T18:54:37.700 に答える
38

Context.getApplicationInfo().dataDir パッケージの永続データフォルダが必要な場合は、試すことができます。

getFilesDir()thisのサブルートを返します。

于 2012-10-09T03:42:49.377 に答える
15

アプリケーションパッケージ内のファイルのパスを取得するには;

ContextWrapper c = new ContextWrapper(this);
Toast.makeText(this, c.getFilesDir().getPath(), Toast.LENGTH_LONG).show();
于 2013-09-12T07:49:22.263 に答える