1

Androidアプリケーションを作成していますが、2つのファイルをデバイスの内部ストレージにコピーする必要があります。現在、DDMSを使用してデバイスの「/ data / data / [my_package_name] / files」フォルダーにあるこれら2つのファイルを手動でコピーした後、アプリケーションを実行できます。アプリケーションをデバイスにインストールしているときに、これら2つのファイルをそのフォルダー(または任意のフォルダー)に配置する必要があります。ここでのヒントは、「res / raw /」ディレクトリ内のファイルがデバイスにデプロイされ、openRawResource()を介してアクセスできることを示していますが、これらのファイルが内部メモリ内のどこに配置されるかはわかりません。夏に向けて、プロジェクトフォルダー(assets、raw、その他のフォルダー)に2つのファイルがあり、これら2つを内部メモリのパス内にコピーする必要があります。どうすればこれを達成できますか?AndroidManifest.xmlにアクセス許可を含める必要がありますか?

前もって感謝します

4

1 に答える 1

1

大きな問題ではない。これを行うにはいくつかの方法がありますが、おそらくこれよりも短い方法です。

InputStream is = AssetManager.open("somefile.txt");
File outputFile = new File(getExternalFilesDir(), "somefile.txt");
OutputStream os = new FileOutputStream(outputFile);

//Now copy is to os. I'd recommend using Apache Commons IO
org.apache.commons.io.IOUtils.copy(is, os));

はい、SD カードへの書き込み権限 (WRITE_EXTERNAL_STORAGE) が必要です。

更新:
明確にするために:ヒントの内容は次のとおりです。

ヒント: コンパイル時にアプリケーションに静的ファイルを保存する場合は、そのファイルをプロジェクトの res/raw/ ディレクトリに保存します。R.raw を渡して openRawResource() で開くことができます。リソース ID。このメソッドは、ファイルの読み取りに使用できる InputStream を返します (ただし、元のファイルに書き込むことはできません)。

assets フォルダー内のファイルは apk に含まれていますが、これらは読み取り専用であり、内部または外部メモリに展開されることはありません。上記の例に示すように、それを行う必要がある場合は、自分で行う必要があります。

于 2012-11-27T12:36:05.303 に答える