Spec-Zone .ru
спецификации, руководства, описания, API
|
java.io
пакет обеспечивает классы, которые позволяют Вам преобразовывать между потоками символа Unicode и потоками байтов текста не-Unicode. С InputStreamReader
class, можно преобразовать потоки байтов в символьные потоки. Вы используете OutputStreamWriter
Когда Вы создаете InputStreamReader
и OutputStreamWriter
объекты, Вы определяете байт, кодирующий это, Вы хотите преобразовать. Например, чтобы преобразовать текстовый файл в UTF-8, кодирующем в Unicode, Вы создаете InputStreamReader
следующим образом:
FileInputStream fis = new FileInputStream("test.txt"); InputStreamReader isr = new InputStreamReader(fis, "UTF8");
Если Вы опускаете идентификатор кодирования, InputStreamReader
и OutputStreamWriter
положитесь на кодировку по умолчанию. Можно определить который кодирование InputStreamReader
или OutputStreamWriter
использование, вызывая getEncoding
метод, следующим образом:
InputStreamReader defaultReader = new InputStreamReader(fis); String defaultEncoding = defaultReader.getEncoding();
Пример, который следует за шоу Вы, как выполнить преобразования набора символов с InputStreamReader
и OutputStreamWriter
классы. Полный исходный код для этого примера находится в StreamConverter.java
. Эта программа выводит на экран японские символы. Перед испытанием этого проверьте, что соответствующие шрифты были установлены на Вашей системе. Если Вы используете программное обеспечение JDK, которое является совместимым с версией 1.1, сделайте копию font.properties
файл и затем заменяет это font.properties.ja
файл.
StreamConverter
программа преобразовывает последовательность символов Unicode от a String
объект в a FileOutputStream
из байтов, закодированных в UTF-8. Метод, который выполняет преобразование, вызывают writeOutput
:
static void writeOutput(String str) { try { FileOutputStream fos = new FileOutputStream("test.txt"); Writer out = new OutputStreamWriter(fos, "UTF8"); out.write(str); out.close(); } catch (IOException e) { e.printStackTrace(); } }
readInput
метод читает байты, закодированные в UTF-8 от файла, создаваемого writeOutput
метод. InputStreamReader
объект преобразовывает байты из UTF-8 в Unicode и возвращает результат в a String
. readInput
метод следующие:
static String readInput() { StringBuffer buffer = new StringBuffer(); try { FileInputStream fis = new FileInputStream("test.txt"); InputStreamReader isr = new InputStreamReader(fis, "UTF8"); Reader in = new BufferedReader(isr); int ch; while ((ch = in.read()) > -1) { buffer.append((char)ch); } in.close(); return buffer.toString(); } catch (IOException e) { e.printStackTrace(); return null; } }
main
метод StreamConverter
программа вызывает writeOutput
метод, чтобы создать файл байтов, закодированных в UTF-8. readInput
метод читает тот же самый файл, преобразовывая байты назад в Unicode. Вот исходный код для main
метод:
public static void main(String[] args) { String jaString = new String("\u65e5\u672c\u8a9e\u6587\u5b57\u5217"); writeOutput(jaString); String inputString = readInput(); String displayString = jaString + " " + inputString; new ShowString(displayString, "Conversion Demo"); }
Исходная строка (jaString
) должно быть идентичным недавно создаваемой строке (inputString
). Чтобы показать, что две строки являются тем же самым, программа связывает их и выводит на экран их с a ShowString
объект. ShowString
class выводит на экран строку с Graphics.drawString
метод. Исходный код для этого class находится в ShowString.java
. Когда StreamConverter
программа инстанцирует ShowString
, следующее окно появляется. Повторение выведенных на экран символов проверяет, что две строки идентичны: