Чунькинфайинг стрим. Код правильный? Нужен второй набор глаз - PullRequest
2 голосов
/ 19 ноября 2009

Может кто-нибудь увидеть какие-либо очевидные дыры в моей логике здесь. По сути, мне нужно разбить байтовый массив на куски по 10000 перед отправкой:

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 Ответ

4 голосов
/ 19 ноября 2009

Кажется, что все в порядке, но внешний оператор 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;
}

также будет обрабатывать случай, когда массив меньше размера чанка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...