.NET 4.5

Zip 圧縮の機能強化により、圧縮ファイルのサイズが小さくなりました。 System.IO.Compression 名前空間を参照してください。

System.IO.Compression.ZipArchive によって、圧縮へのすばらしいサポートが追加されました。さらに、DeflateStream の実装によって、以前から存在していたパフォーマンスと圧縮の品質に関する問題がいくらか修正されました。DeflateStream クラスは、.NET Framework 4.5 から、広く普及している zlib ライブラリを使用するようになりました。結果として、以前のバージョンの .NET Framework よりも、デフレート アルゴリズムや (多くの場合) 小さな圧縮ファイルをより適切に実装できるようになりました。

ディスク上のアーカイブ全体を解凍するのに必要なのは、以下の 1 行のみです。

ZipFile.ExtractToDirectory(@"P:\files.zip", @"P:\files");

代表的な操作では、アーカイブ全体をメモリに読み取る必要がなくなりました。たとえば、大きなアーカイブから 1 つのファイルを解凍するには、次のようにします。

using (ZipArchive zipArchive = ZipFile.Open(@"P:\files.zip", ZipArchiveMode.Read))
{
    foreach (ZipArchiveEntry entry in zipArchive.Entries)
    {
        if (entry.Name == "file.txt")
        {
            using (Stream stream = entry.Open())
            { ProcessFile(stream); }
        }
    }
}

zip アーカイブの作成も、同様に機能します。ディレクトリから .zip アーカイブを作成するには、以下の 1 行を記述するだけです。

ZipFile.CreateFromDirectory(@"P:\files", @"P:\files.zip");

もちろん、手動で .zip アーカイブを構築することもでき、内部構造の完全な制御が可能になります。以下のコードは、C# のソース コード ファイルのみが追加されている (さらに、SourceCode というサブディレクトリも追加されている) .zip アーカイブを作成する方法を示します。

IEnumerable<string> files = Directory.EnumerateFiles(@"P:\files", "*.cs");
using (ZipArchive zipArchive = ZipFile.Open(@"P:\files.zip", ZipArchiveMode.Create))
{
    foreach (string file in files)
    {
        var entryName = Path.Combine("SourceCode", Path.GetFileName(file));
        zipArchive.CreateEntryFromFile(file, entryName);
    }
}


超多機能のアクセス解析が永久無料!

コメント:



(画像の文字列を入力して下さい)

トップ   編集 凍結 差分 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019/12/02 (月) 12:32:07 (1628d)

PCpዾyǗlgĂ܂}WŔ܂z 萔O~ył񂫁z Yahoo yV NTT-X Store

z[y[W ̃NWbgJ[h COiq ӂ邳Ɣ[ COsیI COze