gzipstream.copyto替代简便的方法,在.NET 3.5中简便、方法、copyto、gzipstream

2023-09-06 23:15:24 作者:南栀清寒

喜 在这code。在.NET 4中,我用CopyTo从gzipstream方法

hi in this code in .net 4 i used copyto method of gzipstream

        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?

how can i diretly write GZipStream into MemoryStream or FileStream?

推荐答案

流之间复制是pretty的基础:

Copying between streams is pretty basic:

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;
}

因此​​,只要插上在,你应该进行排序:

So just plug that in, and you should be sorted:

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);
}