【Javaでzip作成】JavaでフォルダをZIPに圧縮する方法【コピペでOK】
今回は、Javaを使用して、特定のフォルダをZIPファイルに圧縮する方法をシェアします。
ソースコード
フォルダをZIPに圧縮するプログラムは以下の通りです。
mainメソッドはcompressDirectoryメソッドの呼び出し方の説明のために用意したものなので、
実際に使用する際は削除してOKです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class Main { /** * テスト実行用メソッド * @param args * @throws IOException */ public static void main(String... args) throws IOException { // ZIP化実施フォルダを取得 File dir = new File("ZIP化するフォルダパス"); // ZIP保存先を取得 File destination = new File("ZIP保存先"); // 圧縮実行 compressDirectory(destination, dir); } /** * 指定したフォルダをZIPファイルに圧縮 * @param destination ZIP保存先ファイル * @param dir 圧縮対象のルートフォルダパス * @throws IOException */ private static void compressDirectory(final File destination, final File dir) throws IOException { // 変数宣言 byte[] buf = new byte[1024]; ZipOutputStream zos = null; InputStream is = null; // ZIP対象フォルダ配下の全ファイルを取得 List<File> files = new ArrayList<File>(); getFiles(dir, files); try { // ZIP出力オブジェクトを取得(日本語の文字化けに対応するために文字コードは Shift-JIS を指定) zos = new ZipOutputStream( new BufferedOutputStream(new FileOutputStream(destination)), Charset.forName("Shift-JIS")); // 全ファイルをZIPに格納 for (File file : files) { // ZIP化実施ファイルの情報をオブジェクトに設定 ZipEntry entry = new ZipEntry( file.getAbsolutePath().replace(dir.getAbsolutePath() + File.separator, "")); zos.putNextEntry(entry); // ZIPファイルに情報を書き込む is = new BufferedInputStream(new FileInputStream(file)); int len = 0; while ((len = is.read(buf)) != -1) { zos.write(buf, 0, len); } // ストリームを閉じる is.close(); } // 処理の最後にストリームは常に閉じる } finally { if (zos != null) { zos.close(); } if (is != null) { is.close(); } } } /** * 指定したフォルダ配下の全ファイルを取得 * @param parentDir ファイル取得対象フォルダ * @param files ファイル一覧 */ private static void getFiles(final File parentDir, final List<File> files) { // ファイル取得対象フォルダ直下のファイル,ディレクトリを走査 for (File f : parentDir.listFiles()) { // ファイルの場合はファイル一覧に追加 if (f.isFile()) { files.add(f); // ディレクトリの場合は再帰処理 } else if (f.isDirectory()) { getFiles(f, files); } } } } |
まとめ
今回は、JavaでフォルダをZIPにする方法を紹介しました。
Javaでこんなことがしたいがわからない、などということがあったら、
「問合せフォーム」よりリクエストをお願い致します。
記事を作成してシェアさせて頂きます。