В Java для преобразования байтовых потоков в символьные и обратно используются классы InputStreamReader и OutputStreamWriter. 1. InputStreamReader: Этот класс позволяет преобразовывать байтовые потоки в символьные потоки. Он читает байты из InputStream и декодирует их в символы с использованием указанной кодировки или кодировки по умолчанию. Пример использования: InputStream inputStream = new FileInputStream("file.txt"); Reader reader = new InputStreamReader(inputStream, "UTF-8"); 2. OutputStreamWriter: Этот класс позволяет преобразовывать символьные потоки в байтовые потоки. Он принимает символы из Writer и кодирует их в байты с использованием указанной кодировки или кодировки по умолчанию. Пример использования: OutputStream outputStream = new FileOutputStream("file.txt"); Writer writer = new OutputStreamWriter(outputStream, "UTF-8"); Обратите внимание, что в примерах выше используется кодировка UTF-8. Вы можете указать другую поддерживаемую кодировку в соответствии с вашими потребностями. Использование InputStreamReader и OutputStreamWriter позволяет эффективно работать с символьными данными, основанными на байтовых потоках, и обеспечивает правильное преобразование между байтами и символами с учетом указанной кодировки.