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

0

 

  Объект класса StringReader позволяет считывать символы из строки String и никогда не блокируется. Единственный конструктор класса в качестве параметра принимает ссылку на объект String, содержимое которого подлежит чтению. Следующий пример демонстрирует программу, выполняющую разложение чисел, которые считываются из командной строки либо из стандартного потока System.in, на простые множители:

 

class Factor {

     public static void main(String[]   args)   {

          if (args.length == 0)   {

             factorNumbers(new InputStreamReader(System.in));

          } else  {

               for  (int i  =0;   i   < args.length;   i++)   {

                    StringReader in = new stringReader(args[i]);

                    factorNumbers(in);

                 }

              }

         }

            //………….

}

Если программа вызывается без параметров, метод  factorNumbers, описание

 реализации которого опущено, извлекает числа из стандартного потока

System. in и обрабатывает их.  Если командная строка запуска программы

cсодержит аргументы, для каждого из них создается объект StringReader и

называется factorNumbers. Параметром метода factorNumbers служит по-

чтения,  который содержит символьные  представления чисел,  подлежащих

обработке; метод как таковой не "осведомлен" о том, откуда поступают

символы — из командной строки либо из стандартного потока ввода.

Объект класса StringWriter позволяет записывать символы в буфер, кото

рый может интерпретироваться как объект типа String или StringBuffer. Пе

речислим конструкторы и методы класса.

 

public StringWriter()

Создает объект потока StringWriter, предусматривающий вывод данных в буфер с размером, предусмотренным по умолчанию.

public StringWriter(int size)

Создает объект потока StringWri ter, предусматривающий вывод данных в буфер заданного размера size. Удачный выбор размера буфера во многих случаях способен привести к существенному росту производительности программы.

public StringBuffer getBuffer()

Возвращает буфер данных, фактически используемый потоком, твиде объекта StringBuffer. Поскольку возвращается именно рабочий буфер, а не его копия, в процессе вывода данных изменять его напрямую не следует.

public String toString()

         Возвращает текущее содержимое буфера потока в виде объекта String.

  Следующий пример кода иллюстрирует использование объекта StringWri ter с целью создания строки, которая содержит результаты вывода данных посредством серии вызовов метода println объекта-оболочки PrintWriter (см. следующий раздел) с аргументами, представляющими элементы заданного массива объектов:

 

public static String arrayToStr(Object[]   objs)   {

 Stringwriter strout = new Stringwriter();

PrintWriter out = new Printwriter(strout);

for  (int i  = 0;   i   < objs.length;   i++)

   out.println(i  + ":   " +      objs[i] );

return strout. toString() ;

}

 

 

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

По теме:

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