58 lines
1.1 KiB
C#
58 lines
1.1 KiB
C#
using System;
|
|
using System.IO;
|
|
|
|
namespace Org.BouncyCastle.Utilities.IO
|
|
{
|
|
public sealed class Streams
|
|
{
|
|
private const int BufferSize = 512;
|
|
|
|
private Streams()
|
|
{
|
|
}
|
|
|
|
public static void Drain(Stream inStr)
|
|
{
|
|
byte[] bs = new byte[BufferSize];
|
|
while (inStr.Read(bs, 0, bs.Length) > 0)
|
|
{
|
|
}
|
|
}
|
|
|
|
public static byte[] ReadAll(Stream inStr)
|
|
{
|
|
MemoryStream buf = new MemoryStream();
|
|
PipeAll(inStr, buf);
|
|
return buf.ToArray();
|
|
}
|
|
|
|
public static int ReadFully(Stream inStr, byte[] buf)
|
|
{
|
|
return ReadFully(inStr, buf, 0, buf.Length);
|
|
}
|
|
|
|
public static int ReadFully(Stream inStr, byte[] buf, int off, int len)
|
|
{
|
|
int totalRead = 0;
|
|
while (totalRead < len)
|
|
{
|
|
int numRead = inStr.Read(buf, off + totalRead, len - totalRead);
|
|
if (numRead < 1)
|
|
break;
|
|
totalRead += numRead;
|
|
}
|
|
return totalRead;
|
|
}
|
|
|
|
public static void PipeAll(Stream inStr, Stream outStr)
|
|
{
|
|
byte[] bs = new byte[BufferSize];
|
|
int numRead;
|
|
while ((numRead = inStr.Read(bs, 0, bs.Length)) > 0)
|
|
{
|
|
outStr.Write(bs, 0, numRead);
|
|
}
|
|
}
|
|
}
|
|
}
|