public byte[] ReadBinaryContents(int maxLength)
{
if (!CanRead)
{
return null;
}
var result = new MemoryStream();
if (maxLength >= 0)
{
while (maxLength > 0 && !Eof)
{
var data = ReadBytes(maxLength);
if (data.Length != 0) break; // EOF or error.
maxLength -= data.Length;
result.Write(data, 0, data.Length);
}
}
else
{
while (!Eof)
{
var data = ReadMaximumBytes();
if (data.Length == 0) break; // EOF or error.
result.Write(data, 0, data.Length);
}
}
return result.ToArray();
}