Используя C#, я был удивлен, как сложно было сохранить двоичную информацию из потока. Я пытаюсь загрузить файл данных PNG с использованием класса WebRequest, но просто перенос полученного потока в файл, без развращения, был более подробным, чем я думал. Во-первых, просто использование StreamReader и StreamWriter не помогло, так как функция ReadToEnd() возвращает строку, которая эффектно удваивает размер файла PNG (вероятно, из-за преобразования UTF)Сохранение двоичных данных в потоках
Итак, мой вопрос: действительно ли у меня есть написать весь этот код, или есть более чистый способ сделать это?
Stream srBytes = webResponse.GetResponseStream();
// Write to file
Stream swBytes = new FileStream("map(" + i.ToString() + ").png",FileMode.Create,FileAccess.Write);
int count = 0;
byte[] buffer = new byte[4096];
do
{
count = srBytes.Read(buffer, 0, buffer.Length);
swBytes.Write(buffer, 0, count);
}
while (count != 0);
swBytes.Close();
вы никогда не должны рассматривать произвольные потоки байтов, как строки. Так как это не так. – Joey