18

必要なすべてのリソースを格納する 1 つのフォルダーが必要で、それを内部ストレージに配置したいと考えています。このディレクトリは一度だけ作成したいので、アプリケーションのメイン アクティビティで作成する必要があることがわかりました。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    File directory = context.getDir("mydir", Context.MODE_PRIVATE);
    Log.d("directory", directory.getAbsolutePath().toString());
} 

これはインターネットで見つけたものなので問題ないようですが、大量のエラーが発生しています。ディレクトリ パスのログにアクセスできますが、アプリケーションが起動しません。理由はありますか?

また、Eclipse から携帯電話にアプリケーションを実行するたびに内部ストレージを使用する場合、前のストレージはリソースと一緒に自動的に削除されますか、それとも手動で行う必要がありますか?

4

6 に答える 6

25

使用してgetCacheDir()ください。ファイルシステム上のアプリケーション固有のキャッシュ ディレクトリへの絶対パスを返します。次に、ディレクトリを作成できます

File myDir = new File(getCacheDir(), "folder");
myDir.mkdir();
于 2012-12-12T18:03:53.657 に答える
9

代わりに外部ストレージSDカードに保存したい場合は、これが必要です

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

AndroidManifest.xml ファイル内

これもストレージを操作するためのものです:

File direct = new File(Environment.getExternalStorageDirectory()+"/folder");

if(!direct.exists()) {
     if(direct.mkdir()); //directory is created;
}
于 2012-12-12T16:43:22.187 に答える
5

まず、アプリケーションで使用できるさまざまなストレージ オプションを読んで理解してください。Google には、このテーマに関する非常に優れた記事があります。

http://developer.android.com/guide/topics/data/data-storage.html

Andy からの上記の回答では、SD カードなどに書き込むための Environment.getExternalStorageDirectory() (API レベル 7) について言及していますが、ユーザーがアプリをアンインストールしても、その場所に書き込まれたファイルは削除されないことに注意してください。ドキュメントには次のように記載されています。

「ユーザーのルート名前空間の汚染を避けるために、アプリケーションはこの最上位ディレクトリを直接使用しないでください」

代わりに、API レベル 8 以上を対象とする場合は、Context.getExternalCacheDir() を使用する必要があります。その場所にあるファイルは、アプリのアンインストール時に削除されるためです。アンインストール後もファイルを保持したい場合は、Context.getExternalFilesDir() を使用する必要があります。内部ストレージ上のファイルを操作するための getCacheDir() と getFilesDir() もあります。

あなたの質問へのコメントで述べたように、私たちがあなたを助けることができるように、ここにエラーを投稿する必要があります.

PS私はSOに関する質問に答えるのが初めてなので、回答に記載されているすべての機能へのリンクを投稿するのに十分な担当者がなく、以前の投稿にコメントできないようです.

于 2012-12-12T17:14:00.147 に答える