Поблочно записать массив байтов в файл - C#

Узнай цену своей работы

Формулировка задачи:

Есть массив байтов размером 256 КБ. Нужно записать его поблочно в файл(повторить 10 раз, размер блока изменять в диапазоне 512-1024 байта). Проблема в том, что я не совсем понимаю как избежать выход за границу массива. В конце цикла for у меня значение счетчика превышает размер массива и я получаю исключение.
static void Main()
        {
            var sourceArray = new byte[256 * 1024];
            new Random().NextBytes(sourceArray);
            var blockSizes =new[]
            {
                512,
                512 + 512/10,
                512 + (512/10)*2,
                512 + (512/10)*3,
                512 + (512/10)*4,
                512 + (512/10)*5,
                512 + (512/10)*6,
                512 + (512/10)*7,
                512 + (512/10)*8,
                1024
            };
            foreach (var bs in blockSizes)
                using (var fs = new FileStream(bs.ToString(), FileMode.Create))
                    for (var i = 0; i < sourceArray.Length; i += bs)
                        fs.Write(sourceArray, i, bs);
        }

Решение задачи: «Поблочно записать массив байтов в файл»

textual
Листинг программы
fs.Write(sourceArray, i, bs+i>sourceArray.Length?sourceArray.Length-i:bs);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.143 из 5
Похожие ответы