日期:2014-05-16  浏览次数:20897 次

有没有简单的方法把MemoryStream的内容,输出到一个二进制文件当中?
如果我不想自己写一个for循环来一点一点读出MemoryStream然后写入一个FileStream,而是用一个简单的方法直接送给一个FileStream,可以做到吗?
------解决方案--------------------
 MemoryStream mem = new MemoryStream();
            FileStream fs = new FileStream(xxxx);
            byte[] buff = mem.ToArray();
            fs.Write(buff, 0, buff.Length);
------解决方案--------------------
引用:
 MemoryStream mem = new MemoryStream();
            FileStream fs = new FileStream(xxxx);
            byte[] buff = mem.ToArray();
            fs.Write(buff, 0, buff.Length);

这种方式我也有使用,但建议使用using,更加安全

 using(MemoryStream mem = new MemoryStream())
{
            using(FileStream fs = new FileStream(xxxx))
            {
                 byte[] buff = mem.ToArray();
                 fs.Write(buff, 0, buff.Length);
            }
}

但这种方式在并发大情况下不推荐使用,从代码上可以看出,它会占用mem.ToArray()容量的内存。如果你的mem对象中本身就有大量数据,并且是在大并发的环境下,那么服务器很容易挂掉。
其实你完全可以将for循环代码封装在一个函数中,就不用每次都重新写了。