1
/// <summary>
/// 从流获取指定长度的字节数组
/// </summary>
public static IEnumerable<byte[]> GetBytes(this Stream stream, long length, int size = 1024)
{
byte[] buffer = new byte[size];
int len, read;
long sum = 0;
do
{
long unread = length - sum;
read = unread >= size ? size : (int)unread;
len = stream.Read(buffer, 0, read);
sum += len;
if (buffer.Length == len)
{
yield return buffer;
}
else
{
yield return buffer.Take(len).ToArray();
}
} while (sum < length && len > 0);
}