Джонатан ударил гвоздь по голове.
Убедитесь, что вы читаете файл в двоичном формате или если вы уверены, что файл содержит только текст (и это все, что вам нужно), то подготовьтесь к тому, чтобы символы файла были в формате Юникод или в каком-либо другом формате.
Вы также обнаружите, что автоматически добавляются дополнительные управляющие символы, не в последнюю очередь символ EOF.
Мой вопрос, однако, почему вы читаете данные из файла только для того, чтобы записать их снова?