You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.2 KiB
45 lines
1.2 KiB
using System; |
|
using System.Collections.Generic; |
|
using System.Linq; |
|
using System.Text; |
|
using System.IO; |
|
|
|
namespace ILRuntime.Mono |
|
{ |
|
static class StreamExtensions |
|
{ |
|
public static void CopyTo(this Stream src, Stream destination) |
|
{ |
|
if (destination == null) |
|
{ |
|
throw new ArgumentNullException("destination"); |
|
} |
|
if (!src.CanRead && !src.CanWrite) |
|
{ |
|
throw new ObjectDisposedException(null, "ObjectDisposed_StreamClosed"); |
|
} |
|
if (!destination.CanRead && !destination.CanWrite) |
|
{ |
|
throw new ObjectDisposedException("destination", "ObjectDisposed_StreamClosed"); |
|
} |
|
if (!src.CanRead) |
|
{ |
|
throw new NotSupportedException("NotSupported_UnreadableStream"); |
|
} |
|
if (!destination.CanWrite) |
|
{ |
|
throw new NotSupportedException("NotSupported_UnwritableStream"); |
|
} |
|
InternalCopyTo(src, destination, 81920); |
|
} |
|
static void InternalCopyTo(Stream src, Stream destination, int bufferSize) |
|
{ |
|
byte[] array = new byte[bufferSize]; |
|
int count; |
|
while ((count = src.Read(array, 0, array.Length)) != 0) |
|
{ |
|
destination.Write(array, 0, count); |
|
} |
|
} |
|
} |
|
}
|
|
|