要求:将D盘中的文件先压缩传输到E盘中解压,实现文件的移动
我的代码如下: //  文件变为流
            fileStream = new FileStream(strOriginalFile, FileMode.Open, FileAccess.Read, FileShare.Read);
            buffer = new byte[fileStream.Length];
            int intCount = fileStream.Read(buffer, 0, buffer.Length);
            fileStream.Close();
            //  压缩
            try
            {
                afterStream = new FileStream(strOriginalFile, FileMode.Open, FileAccess.Read);
                compressStream = new GZipStream(afterStream, CompressionMode.Compress, true);
                //  解压缩
                decompressionStream = new GZipStream(compressesStream, CompressionMode.Decompress, true);
            }
            catch
            {            }
            //  读流
            StreamWriter sw = new StreamWriter(decompressionStream);
            sw.Write(strNewFile, true);我的想法是将文件变成流后,压缩,在解压为流写到新文件中,

compressStream = new GZipStream(afterStream, CompressionMode.Compress, true);
会抛异常说"基流不可写入。"
请问高手,怎么解决啊

解决方案 »

  1.   

    没玩过GZip,会否是compressStream = new GZipStream(afterStream, CompressionMode.Compress, true);这里构造函数中的流afterStream是要可写的。你试试改一下这样:
    afterStream = new FileStream(strOriginalFile, FileMode.CreateNew, FileAccess.Write);我只是从你得到的异常臆测的,见谅,你自己试试看吧。
      

  2.   

    这是刚才我从MSDN上Paste来的,你的问题,应该能确认是作为GZipStream构造函数第一个参数的流不是可写入的。
    InvalidOperationException:stream 访问权限为 ReadOnly,mode 值为 Compress。 
      

  3.   

    那个不行,如果那样的话又会说值不为空,也就是compressStream为null