Java -практика использования

       

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



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

import j ava.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>
.



Содержание раздела