Kotlin Zipファイルに圧縮するサンプル

JavaのZipファイルに圧縮するサンプルです。

目次

zipに圧縮する zipファイルに圧縮する
  コンストラクタとメソッド

zipファイルに圧縮する

2つのテキストファイルを読み込んで、1つのzipファイルに圧縮するサンプルです。

import java.io.IOException
import java.util.zip.ZipEntry
import java.nio.file.Files
import java.util.zip.ZipOutputStream
import java.io.BufferedOutputStream
import java.io.FileOutputStream
import java.nio.file.Paths
import java.nio.charset.Charset

fun main(args: Array<String>) {
    // 文字コード
    val charset = Charset.forName("MS932")
    // 入力ファイル
    val path1 = Paths.get("D:\\Test1", "test1.txt")
    val path2 = Paths.get("D:\\Test1", "test2.txt")
    // 出力ファイル
    val outfile1 = "D:\\\\Test1\\zipテスト.zip"

    try {
        FileOutputStream(outfile1).use { fos ->
            BufferedOutputStream(fos).use { bos ->
                ZipOutputStream(bos, charset).use { zos ->
                    // zipの中のファイル1
                    val data1 = Files.readAllBytes(path1)
                    val zip1 = ZipEntry("zipその1.txt")
                    zos.putNextEntry(zip1)
                    zos.write(data1)

                    // zipの中のファイル2
                    val data2 = Files.readAllBytes(path2)
                    val zip2 = ZipEntry("zipその2.txt")
                    zos.putNextEntry(zip2)
                    zos.write(data2)
                }
            }
        }
    } catch (e: IOException) {
        e.printStackTrace()
    }
}

22行目は、ZipOutputStreamクラスです。zipの圧縮を行う時に使用します。
24~27行目は、zipに圧縮する1つめのファイルです。
30~33行目は、zipに圧縮する2つめのファイルです。
25,31行目の"zipその1.txt"と"zipその2.txt"は、zip内に配置されるファイル名です。

以下は、zipテスト.zipファイルの解凍後の図です。

コンストラクタとメソッド

以下は、上記コードで使用している主なコンストラクタとメソッドです。

ZipOutputStreamクラス

public ZipOutputStream(OutputStream out,Charset charset)
public void putNextEntry(ZipEntry e) throws IOException

ZipEntryクラス

public ZipEntry(String name)

関連の記事

Kotlin テキストファイルの読み書き
Kotlin ファイルの存在/移動/コピー/削除

△上に戻る