Если вы пытаетесь прочитать двоичный поток, вы НЕ должны заключать InputStream
в Reader
любого рода. Считайте данные в буфер байтового массива методом InputStream.read(byte[], int, int)
. Затем запись из буфера в FileOutputStream
.
То, как вы сейчас читаете / записываете файл, преобразует его в «символы» и обратно в байты, используя кодировку символов вашей платформы по умолчанию. Это может искажать двоичные данные.
(Существует кодировка (LATIN-1), которая обеспечивает отображение без потерь без потерь между байтами и подмножеством пространства значений char
. Однако это плохая идея, даже если отображение работает. будет переводить / копировать двоичные данные из byte[]
в char[]
и обратно ... что ничего не дает в этом контексте.)