Hatena::ブログ(Diary)

hogeなlog

プロフィール

hogelog

hogelog

小室 直(こむろ すなお)。電気通信大学2003年入学。2010年修士卒業。プログラミングとかしてます。

カレンダー
1984 | 01 |
2006 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
2010 | 01 | 06 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 05 | 08 | 09 | 10 | 12 |
2012 | 01 | 04 | 06 |

December 11(Sun), 2011

[] Java7触ってみる(1) ZipFS

package org.hogel.ArchiveTest;

import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;

import java.net.URI;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.HashMap;
import java.util.Map;

import org.junit.Test;

public class ZipTest {
    @Test
    public void zipfsのテスト() throws Exception {
        URI zipfile = URI.create("jar:file:/tmp/zipfs-test.zip");
        Map<String, String> env = new HashMap<>();

        // ZIPファイルを新規作成、ZIPエントリ名のエンコーディングはMS932(Shift-JIS)に
        env.put("create", "true");
        env.put("encoding", "MS932");
        try (FileSystem zipfs = FileSystems.newFileSystem(zipfile, env)) {
            // ほげ.txtファイルをZIPファイル内に作成
            Files.write(zipfs.getPath("ほげ.txt"), "ほげ".getBytes("MS932"), StandardOpenOption.CREATE);
        }

        // ZIPエントリほげ.txtというエントリ名がMS932(Shift−JIS)であることを確認
        byte[] zipdata = Files.readAllBytes(Paths.get("/tmp/zipfs-test.zip"));
        assertThat(new String(zipdata, "MS932").contains("ほげ.txt"), is(true));

        // 既存のZIPファイルの読み込みテスト
        env.put("create", "false");
        try (FileSystem zipfs = FileSystems.newFileSystem(zipfile, env)) {
            // ZIPファイル内のほげ.txtファイルを確認
            assertThat(new String(Files.readAllBytes(zipfs.getPath("ほげ.txt")), "MS932"), is("ほげ"));
        }
    }
}

ZIPへの追記、パス名のエンコーディング指定とかが標準ライブラリでできる。Java6でやりたければTrueZIPかな。まあJava7、ボチボチ細かく便利になっていていいですね。

トラックバック - http://d.hatena.ne.jp/hogelog/20111211/p1
リンク元
最近のコメント