データのロード先を/sdcardからリソースに変更する(続き)

ひとまず、時間もないので、辞書データの読み出し側のソースに変更が要らないよう、
実装方針は、
1.アプリ配布時は、リソース(/res/raw/配下)に、辞書データ群のzipファイルを配置し、
2.アプリ初回起動時に、/sdcard/目的のパス/辞書データ.zipをコピーして、
3.コピーした/sdcard/目的のパス/辞書データ.zipを解凍
とすることにしました。
下記の要領で、実装・動作確認もできました。

2は、
InputStream input = this.getResources().openRawResource(R.raw.リソースID); //R.javaのリソースIDですね。
で、リソース内の辞書データを指定し、
OutputStream output = new FileOutputStream(コピー先のパス);
で、コピー先を指定すれば、あとは
int DEFAULT_BUFFER_SIZE = 1024 * 4;
byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
int n = 0;
while (-1 != (n = input.read(buffer))) {
   output.write(buffer, 0, n);
}
とかで、コピーできます。

3は、
JavaのZipFileクラスを使った解凍。
あとは不要な/sdcardにコピーしたzipファイルを削除すればOK。

サンプルコードは、備忘を兼ねてまた後日追記します。


余談ですが、4月に出るexperiaは、体感でdev Phoneの5倍はパフォーマンスが良いといううわさです。
いよいよAndroidも浸透してくる予感ですね。