GzipStream 本身不支持分段压缩..
可以先将700M的文件拆分为小文件...然后分别调用GzipStream压缩..

解决方案 »

  1.   

    0x1000为一段,压缩和解压,参考如下代码
    using System.IO;
    using System.IO.Compression;private void button1_Click(object sender, EventArgs e)
    {
        FileStream vSourceFileStream = new FileStream(@"c:\temp\temp.bmp", 
            FileMode.Open, FileAccess.Read, FileShare.Read);
        FileStream vDestFileStream = new FileStream(@"c:\temp\temp.zip",
            FileMode.OpenOrCreate, FileAccess.Write);    GZipStream vGZipStream = new GZipStream(vDestFileStream, 
            CompressionMode.Compress, true);
        byte[] vBuffer = new byte[0x1000];
        int vReadLength = vSourceFileStream.Read(vBuffer, 0, vBuffer.Length);
        while (vReadLength > 0)
        {
            vGZipStream.Write(vBuffer, 0, vReadLength);
            vReadLength = vSourceFileStream.Read(vBuffer, 0, vBuffer.Length);
        }
        vGZipStream.Close();
        vSourceFileStream.Close();
        vDestFileStream.Close();
    }private void button2_Click(object sender, EventArgs e)
    {
        FileStream vSourceFileStream = new FileStream(@"c:\temp\temp.zip",
            FileMode.Open, FileAccess.Read, FileShare.Read);
        FileStream vDestFileStream = new FileStream(@"c:\temp\temp2.bmp",
            FileMode.OpenOrCreate, FileAccess.Write);    GZipStream vGZipStream = new GZipStream(vSourceFileStream,
            CompressionMode.Decompress, true);
        byte[] vBuffer = new byte[0x1000];
        int vReadLength = vGZipStream.Read(vBuffer, 0, vBuffer.Length);
        while (vReadLength > 0)
        {
            vDestFileStream.Write(vBuffer, 0, vReadLength);
            vReadLength = vGZipStream.Read(vBuffer, 0, vBuffer.Length);
        }
        vGZipStream.Close();
        vSourceFileStream.Close();
        vDestFileStream.Close();
    }