Мне интересно, почему так много примеров читают массивы байтов в потоки в патронах, а не все сразу... Я знаю, что это сложный вопрос, но мне интересно.
Я немного разбираюсь в оборудовании, и буферы заполнения могут сильно зависеть от размера, и вы не захотите снова писать в буфер, пока он не будет сброшен туда, куда он должен идти и т. д. ... но с платформой .Net (и другими современные языки) я вижу примеры обоих. Итак, когда использовать какой и когда, или второй абсолютный нет нет?
Вот что я имею в виду (код):
var buffer = new byte[4096];
while (true)
{
var read = this.InputStream.Read(buffer, 0, buffer.Length);
if (read == 0)
break;
OutputStream.Write(buffer, 0, read);
}
скорее, чем:
var buffer = new byte[InputStream.Length];
var read = this.InputStream.Read(buffer, 0, buffer.Length);
OutputStream.Write(buffer, 0, read);
Я считаю, что оба законны? Так зачем проходить через всю возню с циклом while (в чем бы вы ни решили его структурировать)?
Я играю здесь в адвоката дьявола, так как хочу узнать как можно больше :)