Иллюстрированный самоучитель по Java

Консольный ввод/вывод

В листинге 18.1 приведена программа, иллюстрирующая перечисленные методы консольного ввода/вывода. На рис. 18.3 показан вывод этой программы.

Листинг 18.1. Консольный ввод/вывод.

import java.io.*;
class PrWr{
public static void main(String[] args){
try{
BufferedReader br =
new BufferedReader(new InputstreamReader(System.in, "Cp866"));
PrintWriter pw = new PrintWriter(
new OutputstreamWriter(System.out, "Cp866"), true);
String s = "Это строка с русским текстом";
System.out.println("System.out puts: " + s);
pw.println("PrintWriter puts: " + s);
int с = 0;
pw.println("Посимвольный ввод:");
while((с = br.read())!= -1)
pw.println((char)c);
pw.println("Построчный ввод:");
do{
s = br.readLine();
pw.println(s);
}while(!s.equals("q"));
}catch(Exception e){
System.out.println(e);
}
}
}

Поясним рис. 18.3. Первая строка выводится потоком system.out. Как видите, кириллица выводится неправильно. Следующая строка предварительно преобразована в поток байтов, записанных в кодировке СР866.

Затем, после текста "Посимвольный ввод:" с консоли вводятся символы "Россия" и нажимается клавиша Enter. Каждый вводимый символ отображается на экране – операционная система работает в режиме так называемого "эха". Фактический ввод с консоли начинается только после нажатия клавиши Enter, потому что клавиатурный ввод буферизуется операционной системой. Символы сразу после ввода отображаются по одному на строке. Обратите внимание на две пустые строки после буквы я. Это выведены символы '\п' и '\г', которые попали во входной поток при нажатии клавиши Enter. У них нет никакого графического начертания (glyph).

Потом нажата комбинация клавиш CTRL + Z. Она отображается на консоль как "^Z" и означает окончание клавиатурного ввода, завершая цикл ввода символов. Коды этих клавиш уже не попадают во входной поток.

Далее, после текста "Построчный ввод:" с клавиатуры набирается строка "Это строка" и, вслед за нажатием клавиши Enter, заносится в строку s. Затем строка s выводится обратно на консоль.

Для окончания работы набираем q и нажимаем клавишу Enter.

Иллюстрированный самоучитель по Java › Потоки ввода/вывода › Консольный ввод/вывод
Рис. 18.3. Консольный ввод/вывод

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.