FileStream stream = File.OpenRead(filename);
byte[] array = new byte[stream.Length];
Вы фактически никогда не читаете в байтах, вы просто инициализируете массив вправо size , но не заполняете data .Это означает, что вы записываете кучу нулевых байтов в свой новый файл.
Вместо этого используйте инфраструктуру в ваших интересах - класс File
уже имеет статический метод для чтения всех байтов:
byte[] array = File.ReadAllBytes(filename);
Или, если все вышесказанное действительно является полной областью того, что вы пытаетесь сделать, просто используйте File.Copy()
.