MemoryStream mem = new MemoryStream();
FileStream fs = new FileStream(xxxx);
byte[] buff = mem.ToArray();
fs.Write(buff, 0, buff.Length);
FileStream fs = new FileStream(xxxx);
byte[] buff = mem.ToArray();
fs.Write(buff, 0, buff.Length);
解决方案 »
- C# Winform 如何写Cookie 加急
- "form4"方法没有采用“0”个参数的重载
- 有没有办法这样结合特性和线程
- sqlDependency的onChange事件触发时,总是提示通知事件原因为Invalid
- 如何用C#编写 ISAPI (IIS筛选器)
- 急救 小球脱离主窗体,单独在桌面上显示,困了我很久的,各位弟兄多多帮忙,兄弟先行谢过!
- 这段C#代码应该如何写?
- !!!!~急 Microsoft Visual Studio 2010 专业精简版安装问题!!!!~急
- 怎样在一个事件中触发另一个事件?
- 请教,id=fos@#sun,Request.QueryString["id"]执行后取出的值为"fos@","#"后面的全部被截去了,请问怎么解决,谢谢。
- 江湖救急,后天就要交。求一个监视记事本保存操作的消息钩子(hook)实例代码
- 输出treeview中的选中子节点的父节点,但提示空引用异常
FileStream fs = new Filestream();
fs.Write(ms.GetBuffer(), 0, ms.Position);
{
using(FileStream fs = new FileStream(xxxx))
{
byte[] buff = mem.ToArray();
fs.Write(buff, 0, buff.Length);
}
}但这种方式在并发大情况下不推荐使用,从代码上可以看出,它会占用mem.ToArray()容量的内存。如果你的mem对象中本身就有大量数据,并且是在大并发的环境下,那么服务器很容易挂掉。
其实你完全可以将for循环代码封装在一个函数中,就不用每次都重新写了。
{
using(FileStream fs = new FileStream(xxxx))
{
byte[] buff = mem.ToArray();
fs.Write(buff, 0, buff.Length);
}
}但这种方式在并发大情况下不推荐使用,从代码上可以看出,它会占用mem.ToArray()容量的内存。如果你的mem对象中本身就有大量数据,并且是在大并发的环境下,那么服务器很容易挂掉。
其实你完全可以将for循环代码封装在一个函数中,就不用每次都重新写了。
既然都用了using了,为什么不加上close?
谢谢,不过这里有个小问题,(1)fs.Write函数的第三个参数是int,而ms.Position是个long类型的属性。如果ms内容很多的话,Position当中的long可能会比int的max还要大。这不就溢出了吗?
(2)GetBuffer()函数是返回了一个原有对象字节流的引用呢,还是返回了ms的内容的拷贝? 如果是一份拷贝的话,有么有办法能避免这种拷贝?谢谢。
那么这个两个函数有什么区别吗?
GetBuffer() 是返回1024()
{
using(FileStream fs = new FileStream(xxxx))
{
byte[] buff = mem.ToArray();
fs.Write(buff, 0, buff.Length);
}
}但这种方式在并发大情况下不推荐使用,从代码上可以看出,它会占用mem.ToArray()容量的内存。如果你的mem对象中本身就有大量数据,并且是在大并发的环境下,那么服务器很容易挂掉。
其实你完全可以将for循环代码封装在一个函数中,就不用每次都重新写了。
既然都用了using了,为什么不加上close?
因为using展开的代码中就包含了对close的调用,所以一般不用调用close。
只有实现了IDisposable接口的类采用使用using
在Dispose方法中,释放资源,例如调用你说的close
参考:http://msdn.microsoft.com/zh-cn/library/system.io.memorystream_methods(v=vs.110).aspx
fs.Write(ms.GetBuffer(), 0, (int)ms.Position)
这里,GetBuffer的确不会建立内存副本,而第三个参数ms.Position实际上就是ms.Length(如果你没有改变Position值的话)