Если вам нужно вставить данные в середину файла, я предлагаю вам создать новый файл. Чередуйте копирование данных из исходного файла и вставку новых данных. Нет необходимости хранить много этого в памяти одновременно.
Копирование определенного «чанка» должно быть простым:
public static void CopyChunk(Stream input, Stream output, int size)
{
byte[] buffer = new byte[16 * 1024];
while (size > 0)
{
int bytesRead = input.Read(buffer, 0, Math.Min(size, bufer.Length));
if (bytesRead == 0)
{
// Or just return if you want - it depends on how you want to handle
// the situation.
throw new IOException("Not enough input data");
}
output.Write(buffer, 0, bytesRead);
size -= bytesRead;
}
}