ホームページ > Java > &#&チュートリアル > ZipInputStream を使用して Android でプログラムでファイルを解凍する方法?

ZipInputStream を使用して Android でプログラムでファイルを解凍する方法?

Mary-Kate Olsen
リリース: 2024-10-29 22:38:02
オリジナル
332 人が閲覧しました

How to Programmatically Unzip Files in Android using ZipInputStream?

Android でのプログラムによる解凍

Android でプログラムによるファイルの解凍を行うと、開発者は圧縮された .zip アーカイブから個々のファイルを抽出して管理できます。これを実現するために、いくつかの手法とライブラリが利用可能です。

効率的な方法の 1 つは、ZipInputStream クラスの使用です。このクラスは、.zip アーカイブからファイルを読み取り、解凍するためのバッファリングされた入力ストリームを提供します。以下のコード スニペットは、ZipInputStream を使用してファイルを抽出する方法を示しています。

<code class="java">private boolean unpackZip(String path, String zipname) {
    try (InputStream is = new FileInputStream(path + zipname);
         ZipInputStream zis = new ZipInputStream(new BufferedInputStream(is))) {
        ZipEntry ze;
        byte[] buffer = new byte[1024];
        int count;

        while ((ze = zis.getNextEntry()) != null) {
            String filename = ze.getName();

            // Create directories if necessary
            if (ze.isDirectory()) {
                File fmd = new File(path + filename);
                fmd.mkdirs();
                continue;
            }

            FileOutputStream fout = new FileOutputStream(path + filename);

            while ((count = zis.read(buffer)) != -1) {
                fout.write(buffer, 0, count);
            }

            fout.close();
            zis.closeEntry();
        }

        zis.close();
        return true;
    } catch (IOException e) {
        e.printStackTrace();
        return false;
    }
}</code>
ログイン後にコピー

このコードは、getNextEntry() を使用して .zip ファイルのエントリを反復処理し、ディレクトリとディレクトリを確認しながら、指定されたパスに各ファイルを抽出します。

peno による ZipInputStream の最適化により、パフォーマンスが大幅に向上します。これにより、ループの外でバッファーが確実に初期化されるため、メモリ使用量とオーバーヘッドが削減されます。

以上がZipInputStream を使用して Android でプログラムでファイルを解凍する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート