Посмотрите на эту строку:
using (BinaryWriter bw = new BinaryWriter(ms))
Вы пишете обратно в MemoryStream .Вы хотите:
using (BinaryWriter bw = new BinaryWriter(fs))
Сказав это, это довольно неприятный способ записи в файл со всеми видами ненужных шагов.Надеюсь, это был всего лишь эксперимент, пытаясь понять, почему что-то еще не работает - но если ваш реальный код на самом деле , как это, пожалуйста, опишите подробно, что вы пытаетесь сделать, и мы можем помочь вам привести в порядокэто.