Как именно вы передаете файлы? Если вы используете реализации InputStream и OutputStream , они работают на уровне байтов, поэтому вы должны получить двоично-равный вывод.
Если вы используете реализации Reader и Writer , они преобразуют байты в символы согласно некоторому сопоставлению символов, а затем выполняют обратный процесс при сохранении. В зависимости от кодировки платформы различных машин (и, возможно, других эффектов, если вы не указываете кодировку явно), вы можете в конечном итоге иметь различия в двоичном файле.
Тот факт, что вы упоминаете переводы строк, заставляет меня думать, что вы используете Readers
для отправки строк (и, возможно, вы сами собираете строки обратно, вручную добавляя переводы строк). Если вы хотите, чтобы файлы были в двоичном формате равными, отправьте их как поток байтов и сохраните этот поток дословно. Если вы хотите, чтобы они были равны строкам в данном наборе символов, используйте Readers and Writers, но явно укажите набор символов. Если вы хотите, чтобы они передавались в виде строк в наборе платформы по умолчанию (не очень полезно), то примите, что они не будут двоичными, равными файлам.
(Кроме того, ваш вопрос на самом деле не дает много информации для его решения. Для меня он в основном гласит: «Я написал некоторый код для выполнения X
, и он не работает. Где я ошибся?» Вы, кажется, предполагаете, что ваш код правильный, не перечисляя его, но в то же время понимаете, что это не так ...)