Chunkinfying流。代码是否正确?需要第二组眼睛

时间:2009-11-19 06:43:43

标签: c# stream

任何人都可以在我的逻辑中看到任何明显的漏洞。基本上我需要在发送出来之前将一个字节数组分成10,000个块:

byte [] bytes = GetLargePieceOfData();    
Stream stream = CreateAStream();

if (bytes.Length > 10000)
{
    int pos = 0;
    int chunkSize = 10000;

    while (pos < bytes.Length)
    {
        if (pos + chunkSize > bytes.Length)
            chunkSize = bytes.Length - pos;

        stream.Write(bytes, pos, chunkSize);
        pos += chunkSize;
    }
}
else
{
    stream.Write(bytes, 0, bytes.Length);
}

1 个答案:

答案 0 :(得分:4)

一切似乎都是有序的,但最外面的if语句实际上是多余的,如下面的代码

int pos = 0;
int chunkSize = 10000;

while (pos < bytes.Length)
{
    if (pos + chunkSize > bytes.Length)
        chunkSize = bytes.Length - pos;

    stream.Write(bytes, pos, chunkSize);
    pos += chunkSize;
}

还将处理数组小于块大小的情况。