Kotlinの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) |
- コンストラクタです。
- 2つめの引数は、zip内に配置するファイル名の文字コードを指定します。
- 新しいZIP出力ストリームを作成します。
- 以下は、OracleのZipOutputStreamクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/util/zip/ZipOutputStream.html
public void putNextEntry(ZipEntry e) throws IOException |
- ZipOutputStreamクラスのメソッドです。
- 新しいZIPファイルの書込みを開始します。
- 以下は、OracleのZipOutputStreamクラスのputNextEntryメソッドのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/util/zip/ZipOutputStream.html#putNextEntry-java.util.zip.ZipEntry-
ZipEntryクラス
public ZipEntry(String name) |
- コンストラクタです。
- zip内に配置するファイルを作成します。
- 引数には、配置するファイル名を指定します。
- 以下は、OracleのZipEntryクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/util/zip/ZipEntry.html
関連の記事