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

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

確認環境
・Java 8

目次

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

zipファイルに圧縮する

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

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

public class Test1 {
    public static void main(String[] args) {
    	// 文字コード
    	Charset charset = Charset.forName("MS932");
    	// 入力ファイル
    	Path path1 = Paths.get("D:\\Test1","test1.txt");
    	Path path2 = Paths.get("D:\\Test1","test2.txt");
    	// 出力ファイル
        String outfile1 = "D:\\\\Test1\\zipテスト.zip";
        
        try(
                FileOutputStream fos = new FileOutputStream(outfile1);
                BufferedOutputStream bos = new BufferedOutputStream(fos);
        		ZipOutputStream zos = new ZipOutputStream(bos,charset);
        ) {
    		// zipの中のファイル1
    		byte[] data1 = Files.readAllBytes(path1);
    		ZipEntry zip1 = new ZipEntry("zipその1.txt");
    		zos.putNextEntry(zip1);
    		zos.write(data1);
    		
    		// zipの中のファイル2
    		byte[] data2 = Files.readAllBytes(path2);
    		ZipEntry zip2 = new ZipEntry("zipその2.txt");
    		zos.putNextEntry(zip2);
    		zos.write(data2);
    		
		} catch (IOException e) {
			e.printStackTrace();
		}
    }
}

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

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

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

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

ZipOutputStreamクラス

public ZipOutputStream(OutputStream out,Charset charset)
public void putNextEntry(ZipEntry e) throws IOException
public void write(byte[] b,int off,int len)throws IOException

ZipEntryクラス

public ZipEntry(String name)

関連の記事

Java テキストファイルの読み書き(Filesクラス)
Java バイナリファイルの読み込みと書き込み
Java ファイルの読み書き(文字コードを指定するクラス)

△上に戻る