Главная » Java » LineNumberReader в Java

0

 

   Объект класса LineNumberReader позволяет осуществлять чтение строк текста с сохранением их нумерации. Строкой, как обычно, считается последовательность символов, завершаемая одним из следующих признаков: перевод строки (line feed) (\n), возврат каретки (carriage return) (\r) либо символ возврата каретки, сопровождаемый признаком перевода строки (\r\n).

   Следующая программа выводит на экран номер строки указанного файла, в которой встречен первый экземпляр заданного символа:

 

import java.io.*;

class  Findchar {

      public static void main(String[]   args)

             throws lOException

{

             if (args.length != 2)

                throw new illegalArgumentException (

                   "требуются <символ> и <имячфайла>");

int match = args[0].charAt(O);

 FileReader filein = new FileReader(args[l]);

 LineNumberReader in = new LineNumberReader(fileln);

 int ch;

while  ((ch = in.read())   != -1)   {

if (ch == match)  {

System.out.println(“’”  +  (char)ch +

   " ‘   в строке  " + in.getLineNumber());

return;

    }

 }

System.out.println((char)ch + "  не найден");

   }

}

 

Программа создает объект filein класса FileReader, обеспечивающий чтение содержимого файла с именем, заданным в командной строке, и передает этот объект в качестве параметра конструктору объекта in класса LineNumberReader. Объекты LineNumberReader присоединяются к потокам Reader, служащим источниками данных, и отслеживают номера строк по мере чтения последних. Метод getLineNumber возвращает номер текущей строки; по умолчанию отсчет номеров строк ведется, начиная с нуля. Если вызвать программу, передав ей в качестве параметров командной строки символ ‘ I’ и имя файла с исходным кодом этой же программы, результат будет выглядеть так:

     ‘I’   в  строке 4

   Изменить номер текущей строки можно с помощью метода setLineNum. Такое средство окажется полезным,  если,  например,  файл-источник содерж несколько порций разнородной информации. При переходе к началу очередной порции уместно, вызвав setLineNumber, в качестве номера текущей строки дать 1, и пользователь будет получать номера строк для каждой отдельной час файла, а не для всего файла в целом.

  

Класс LineNumberReader относится к типу BufferedReader, в составе которого, напомним, определены два конструктора: один в качестве параметров принимает ссылку на объект "внутреннего" потока и значение объема буфера, а другому передается только ссылка на объект потока — размер буфера предлагается по умолчанию (см. раздел 15.4.3).

 

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

По теме:

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