AndroidでZipファイルを展開して読み込み

android-zip.png

java.util.zipを使う

zipの中に入っているファイル名の列挙

Resources res = this.getResources();//thisはContext型なら何でもいい
        ZipInputStream zins = new ZipInputStream(res.openRawResource(R.raw.kinkakuji));
        ZipEntry zipEntry=null;
        try {
            while( (zipEntry = zins.getNextEntry()) != null)
            {
                      Log.d("myamahir",zipEntry.getName());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

getName()のところをtoString()にしても同じ結果になりました。

出力結果

たとえば、お寺の3DのKMZファイルの中を覗いた結果。 getName()という名前の関数だけど、フォルダの下のファイル名までリストアップしてくれます。相対パスリストみたいなものかな。

doc.kml
 models/model.dae
 images/texture0.jpg
 images/texture1.jpg
 images/texture2.jpg
images/texture3.jpg
 images/texture0.png
 images/texture4.jpg
 images/texture5.jpg
 images/texture6.jpg
images/texture7.jpg
 images/texture8.jpg
 images/texture9.jpg
 images/texture1.png
 images/texture10.jpg
images/texture11.jpg
images/texture12.jpg
 images/texture13.jpg
textures.txt

zipの中に入っているテキストファイルを読み込む

Resources res = this.getResources();//thisはContext型なら何でもいい
        ZipInputStream zins = new ZipInputStream(res.openRawResource(R.raw.kinkakuji));
        ZipEntry zipEntry=null;
        try {
 
            while( (zipEntry = zins.getNextEntry()) != null)
            {
                byte[] data=new byte[(int)zipEntry.getSize()];
                zins.read(data,0,(int)zipEntry.getSize());
                String s = new String(data);// byte[]からStringに変換
                Log.d("myamahir",s);
 
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

サポートサイト Wikidot.com