kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

.NET 4.5のSystem.IO.Compression.ZipArchiveクラスと日本語版WindowsのZipフォルダー

だいぶ前も不安視していた、.NET 4.5のZipArchiveクラスですが、やっぱりマルチバイト系のエンコーディングは強制的にUTF-8で格納されているっポイですね…。パッと見、エンコーディングを指定できないようですがどうするんだろう。ZipArchiveEntryっていうクラスがあって、それぞれのファイル単位にもつメタデータのようですがこれもstringですし…うーん。日本語feedbackサイトが閉じられているけど、英語のほうに行くしかないのかな。

using System;
using System.IO.Compression;
using System.IO;

namespace ziptest
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var zip = new ZipArchive(@"c:\temp\あ\ziptest.zip", ZipArchiveMode.Create))
            {
                var files = new DirectoryInfo(@"c:\temp").GetFiles("*.*");
                Array.ForEach(files, x => zip.CreateEntryFromFile(x.FullName, x.Name));
            }
        }
    }
}