c# - gzipstream.copyto .net 3.5 中的替代且简单的方法

标签 c# .net .net-3.5

嗨 在.net 4的这段代码中我使用了gzipstream的copyto方法

        System.IO.MemoryStream ms = new System.IO.MemoryStream(byteArray);
        GZipStream DecompressOut = new GZipStream(ms, System.IO.Compression.CompressionMode.Decompress);
        MemoryStream outmem = new MemoryStream();
        DecompressOut.copyto(outmem);
        FileStream outFile = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write);
        StreamWriter m_streamWriter = new StreamWriter(outFile);

如何将 GZipStream 直接写入 MemoryStream 或 FileStream?

最佳答案

流之间的复制非常基本:

public static long CopyTo(this Stream source, Stream destination) {
    byte[] buffer = new byte[2048];
    int bytesRead;
    long totalBytes = 0;
    while((bytesRead = source.Read(buffer, 0, buffer.Length)) > 0) {
        destination.Write(buffer, 0, bytesRead);
        totalBytes += bytesRead;
    }
    return totalBytes;
}

所以只要将其插入,你就应该被排序:

using(var ms = new MemoryStream(byteArray))
using(var gzip = new GZipStream(ms, CompressionMode.Decompress))
using (var file = new FileStream(fileName, FileMode.OpenOrCreate,
                                           FileAccess.Write)) {
    gzip.CopyTo(file);
}

关于c# - gzipstream.copyto .net 3.5 中的替代且简单的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3985795/

相关文章:

c# - 删除 TableLayoutPanel 中的特定行

c# - 无法访问具有 group by 的字段和使用 linq 的多个连接

c# - 我在哪里可以看到 WPF 功能的一些很好的例子?

c# - 如何建立一个可以被2个线程同时访问的队列?

c# - 使用 ASP.Net Core 中间件启动后台任务

c# - 为什么 System.IO.File 类是静态的

c# - 错误 - 找不到文件 'C:\WINDOWS\TEMP\xxxxxx.dll'

C#,在表单中显示纯文本

c# - 带有显示详细信息选项的消息框?

c# - WPF MVVM 和 View 继承