/// <summary> /// Copies a <see cref="Stream"/> instance to a new instance of a <see cref="MemoryStream"/>. /// </summary> /// <param name="source">The <see cref="Stream"/> to copy from.</param> /// <returns>A new instance of a <see cref="MemoryStream"/> containing the data in the <paramref name="source"/>.</returns> public static MemoryStream ToMemoryStream(this Stream source) { if (source.IsNull()) { throw new ArgumentNullException("stream"); } MemoryStream mStream = source as MemoryStream; if (mStream.IsNotNull()) { return(mStream); } return(new MemoryStream(source.ToByteArray())); }
/// <summary> /// Converts a <see cref="Stream"/> to a <see cref="Byte"/> <see cref="Array"/>. /// </summary> /// <param name="stream">The <see cref="Stream"/> to convert.</param> /// <returns>A <see cref="Byte"/> <see cref="Array"/> of the data contained in the <paramref name="stream"/>.</returns> /// <exception cref="ArgumentNullException"> thrown if the <paramref name="stream"/> is <c>Null</c>.</exception> public static byte[] ToByteArray(this Stream stream) { if (stream.IsNull()) { throw new ArgumentNullException("stream"); } MemoryStream mStream = stream as MemoryStream; if (mStream.IsNotNull()) { return(mStream.ToArray()); } stream.Position = 0; byte[] buffer = new byte[stream.Length]; for (int totalBytesCopied = 0; totalBytesCopied < stream.Length;) { totalBytesCopied += stream.Read(buffer, totalBytesCopied, Convert.ToInt32(stream.Length) - totalBytesCopied); } return(buffer); }