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); } } } }