|
Spec-Zone .ru
спецификации, руководства, описания, API
|
java.io пакет обеспечивает классы, которые позволяют Вам преобразовывать между потоками символа Unicode и потоками байтов текста не-Unicode. С InputStreamReader class, можно преобразовать потоки байтов в символьные потоки. Вы используете class, чтобы преобразовать символьные потоки в потоки байтов. Следующее число иллюстрирует процесс преобразования:

Когда Вы создаете 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 программа преобразовывает последовательность символов 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, следующее окно появляется. Повторение выведенных на экран символов проверяет, что две строки идентичны:
