Вы используете входной поток для чтения отдельных байтов из вашего входного файла. Это текстовый файл, но если вас не волнует текстовое содержимое, его можно прочитать потоком.
Затем вы создаете BufferedWriter и начинаете записывать байт (8 бит), который вы читали из своего потока, в виде символов в свой модуль записи. Это проблема, ИМХО.
Как только во входном файле появляются многобайтовые символы, вы начинаете делать странные вещи.
Это нормально, чтобы прочитать ваш текстовый файл с помощью потока, но тогда вы должны также записать вывод с использованием потока. Не смешивайте читатель / писатель и потоки.
Можно также установить тип содержимого как text / csv, даже если вы читаете файл с использованием потока, если, конечно, файл является текстовым файлом.