Главная » Java » Символьные и стандартные потоки в Java

0

 

   Стандартные потоки System.in, System.out и System.err существовали в Java еще до изобретения символьных потоков, поэтому стандартные потоки относятс категории байтовых, хотя в соответствии с элементарной логикой им следовало быть

символьными. Такая ситуация приводит к возникновению ряда аномалий. Например, не представляется возможным непосредственно заменить System, in потоком типа LineNumberReader, обеспечивающим чтение строк с сохранением их нумерации. Объект LineNumberReader может быть создан при посредничестве объекта inputStreamReader, получающего в качестве параметра System.in и выполняющего преобразование байтового потока ввода в символьный поток чтения. Но System, in, на самом деле, суть inputStream, так что его нельзя непосредственно заменить объектом LineNumberReader, относящимся к типу Reader, а не к InputStream.

  Поля System.out и System.err есть объекты класса PrintStream. Устаревший и не рекомендуемый для дальнейшего использования класс PrintStream был заменен аналогичным по назначению классом символьного потока PrintWriter. Вообще говоря, создавать объекты PrintStream непосредственно не следует. За более подробными сведениями о потоковых классах print обращайтесь к разделу 15.4.8 на странице 394.

  Типы InputStreamReader и OutputStreamWriter, рассмотренные ниже, обеспечивают возможность преобразования байтовых потоков ввода в символьные потоки чтения и символьных потоков записи в байтовые потоки вывода соответственно, с учетом указанной кодировки символов.

 

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии