Stream.CopyTo() extension method
Posted
by DigiMortal
on ASP.net Weblogs
See other posts from ASP.net Weblogs
or by DigiMortal
Published on Tue, 28 Dec 2010 01:24:08 GMT
Indexed on
2010/12/28
1:54 UTC
Read the original article
Hit count: 429
In one of my applications I needed copy data from one stream to another. After playing with streams a little bit I wrote CopyTo() extension method to Stream class you can use to copy the contents of current stream to target stream. Here is my extension method.
It is my working draft and it is possible that there must be some more checks before we can say this extension method is ready to be part of some API or class library.
public static void CopyTo(this Stream fromStream, Stream toStream)
{
if (fromStream == null)
throw new ArgumentNullException("fromStream");
if (toStream == null)
throw new ArgumentNullException("toStream");
var bytes = new byte[8092];
int dataRead;
while ((dataRead = fromStream.Read(bytes, 0, bytes.Length)) > 0)
toStream.Write(bytes, 0, dataRead);
}
And here is example how to use this extension method.
using(var stream = response.GetResponseStream())
using(var ms = new MemoryStream())
{
stream.CopyTo(ms);
// Do something with copied data
}
I am using this code to copy data from HTTP response stream to memory stream because I have to use serializer that needs more than response stream is able to offer.
© ASP.net Weblogs or respective owner