JavaのZipファイルに圧縮するサンプルです。(確認環境:Java8)
目次
サンプル | 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) |
- コンストラクタです。
- 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-
public void write(byte[] b,int off,int len)throws IOException |
- ZipOutputStreamクラスのメソッドです。
- バイト配列をzip内に配置するファイルに書き込みます。
- 以下は、OracleのZipOutputStreamクラスのwriteメソッドのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/util/zip/ZipOutputStream.html#write-byte:A-int-int-
ZipEntryクラス
public ZipEntry(String name) |
- コンストラクタです。
- zip内に配置するファイルを作成します。
- 引数には、配置するファイル名を指定します。
- 以下は、OracleのZipEntryクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/util/zip/ZipEntry.html
関連の記事