大漠孤烟

导航

统计

将多个字符串进行zip压缩

/// <summary>
/// 将多个字符串进行zip压缩,返回压缩后的流,需要安装ICSharpCode.SharpZipLib.Zip
/// </summary>
/// <param name="contents">key:文件名;value:文件名对应的字符串</param>
/// <returns>压缩后的流</returns>
/// ZipOutputStream:相当于一个压缩包;
/// ZipEntry:相当于压缩包里的一个文件;
private static MemoryStream ZipDicString(Dictionary<string, string> contents)
{
    MemoryStream memoryStream = new MemoryStream();
    ZipOutputStream zipOutStream = new ZipOutputStream(memoryStream);
    foreach (string key in contents.Keys)
    {
        // 压缩包中的文件名
        string fileName = key;
        ZipEntry entry = new ZipEntry(fileName);
        entry.DateTime = DateTime.Now;
        entry.IsUnicodeText = true;
        zipOutStream.PutNextEntry(entry);

        // 文件中内容
        string content = contents[key];
        byte[] array = Encoding.ASCII.GetBytes(content);
        zipOutStream.Write(array, 0, array.Length);
        zipOutStream.CloseEntry();
    }
    //使用流操作时一定要设置IsStreamOwner为false。否则很容易发生在文件流关闭后的异常。
    zipOutStream.IsStreamOwner = false;
    zipOutStream.Finish();
    zipOutStream.Close();
    //byte[] buffer = memoryStream.GetBuffer();
    // 避免后面使用的时候,忘了复位,造成读取挂起,等同于position==0
    memoryStream.Seek(0, SeekOrigin.Begin);
    return memoryStream;
}

 

posted on   jnmcok  阅读(1)  评论(0编辑  收藏  举报

(评论功能已被禁用)
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
点击右上角即可分享
微信分享提示