У меня есть 256-байтовый массив байтов. Мне нужно записать его в блок блока за кадром (я должен попробовать 10 различных значений между 512 и 1024 байтами). Я написал немного кода на C#, и моя проблема в том, что в конце моего цикла FileStream.Write я нарушаю границы массива.Запись байтового блока по блоку с помощью FileStream.Write без ArgumentException
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);
}
Вот исключение, которое я не знаю, как бороться с:
Необработанное исключение типа «System.ArgumentException» произошло в mscorlib.dll
Дополнительная информация: Смещение и длина была вне границ для массива или число больше, чем количество элементов от индекса до конца коллекции источника.
Кстати, использование готовых методов, таких как File.WriteAllBytes или File.WriteAllText, неприемлемо.