株式会社イーヴ

EeBlog(テクニカルブログ)

TOP > EeBlog > 第95回 ZIPファイルの入出力

第95回 ZIPファイルの入出力

今回からは「ZIPファイルの入出力」について見ていきます。

次のサンプルコードは、ZIPファイルを作成するプログラムです。
エントリはテキストファイルです。

import java.io.BufferedWriter;

import java.io.FileOutputStream;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.util.HashMap;

import java.util.LinkedList;

import java.util.List;

import java.util.Map;

import java.util.zip.ZipEntry;

import java.util.zip.ZipOutputStream;


 public class Main {


     private static final String CSV_FORMAT = "%1$s,%2$s,%3$s" 
                                            + System.getProperty("line.separator");
     private static final Object[] COLUMNS = { "社員番号", "社員氏名", "部署" };
     private static Map> staffListMap = new HashMap>();
     static {
         List staffList = new LinkedList();
         staffList.add(new Object[] { "100001", "イーブ太郎", "総務部" });
         staffList.add(new Object[] { "100002", "イーブ次郎", "経理部" });
         staffList.add(new Object[] { "100003", "イーブ三郎", "人事部" });
         staffListMap.put("staffList1.csv", staffList);
         staffList = new LinkedList();
         staffList.add(new Object[] { "200001", "イーブ四郎", "総務部" });
         staffList.add(new Object[] { "200002", "イーブ五郎", "経理部" });
         staffList.add(new Object[] { "200003", "イーブ六郎", "人事部" });
         staffListMap.put("staffList2.csv", staffList);
         staffList = new LinkedList();
         staffList.add(new Object[] { "300001", "イーブ七郎", "総務部" });
         staffList.add(new Object[] { "300002", "イーブ八郎", "経理部" });
         staffList.add(new Object[] { "300003", "イーブ九郎", "人事部" });
         staffListMap.put("staffList3.csv", staffList);
     }


     public static void main(String[] args) {
         PrintWriter printWriter = null;
         try {
             ZipOutputStream zipOutputStream 
                          = new ZipOutputStream(new FileOutputStream("output.zip"));
             OutputStreamWriter outputStreamWriter 
                          = new OutputStreamWriter(zipOutputStream, "Shift-JIS");
             printWriter = new PrintWriter(new BufferedWriter(outputStreamWriter));
             for (Map.Entry> mapEntry : staffListMap.entrySet()) {
                 ZipEntry zipEntry = new ZipEntry(mapEntry.getKey());
                 zipOutputStream.putNextEntry(zipEntry);
                 printWriter.printf(CSV_FORMAT, COLUMNS);
                 for (Object[] staff : mapEntry.getValue()) {
                     printWriter.printf(CSV_FORMAT, staff);
                 }
                 printWriter.flush();
                 zipOutputStream.closeEntry();
             }
         } catch (Exception e) {
             e.printStackTrace();
         } finally {
             if (printWriter != null) {
                 try {
                     printWriter.close();
                 } catch (Exception e) {}
             }
         }
     }
 }