Класс Java.io.LineNumberReader в Java
Буферизованный поток ввода символов, отслеживающий номера строк. Этот класс определяет методы setLineNumber (int) и getLineNumber () для установки и получения текущего номера строки соответственно.
- По умолчанию нумерация строк начинается с 0. Это число увеличивается с каждым указателем конца строки по мере чтения данных и может быть изменено с помощью вызова setLineNumber (int).
- Однако обратите внимание, что setLineNumber (int) фактически не изменяет текущую позицию в потоке; он изменяет только значение, которое будет возвращено getLineNumber ().
- Строка считается завершенной любым из следующих символов: перевод строки (' n'), возврат каретки (' r') или возврат каретки, за которым сразу следует перевод строки.
Конструкторы:
- LineNumberReader (Reader in): создайте новое средство чтения нумерации строк, используя размер буфера ввода по умолчанию.
- LineNumberReader (Reader in, int sz): создать новое средство чтения нумерации строк, считывающее символы в буфер заданного размера.
Методы:
- int getLineNumber (): получить текущий номер строки.
Синтаксис: public int getLineNumber () Возврат: Текущий номер строки
- void mark (int readAheadLimit): Отметьте текущую позицию в потоке. Последующие вызовы reset () будут пытаться переместить поток в эту точку, а также соответствующим образом сбросят номер строки.
Синтаксис: общедоступная метка недействительности (int readAheadLimit) выбрасывает IOException Параметры: readAheadLimit - ограничение на количество символов, которые могут быть прочитаны при этом все еще сохраняя отметку. Прочитав столько символов, попытка сбросить поток может потерпеть неудачу. Броски: IOException
- int read (): чтение одного символа. Знаки конца строки сжимаются в отдельные символы новой строки (' n'). Каждый раз, когда считывается терминатор строки, текущий номер строки увеличивается.
Синтаксис: public int read () выбрасывает IOException Возврат: Прочитанный символ или -1, если достигнут конец потока Броски: IOException
- int read (char [] cbuf, int off, int len): считывает символы в часть массива. Каждый раз, когда считывается признак конца строки, текущий номер строки увеличивается.
Синтаксис: public int read (char [] cbuf, int off, int len) выбрасывает IOException Параметры: cbuf - Целевой буфер off - смещение, с которого начинается сохранение символов len - Максимальное количество символов для чтения Возврат: Количество прочитанных байтов или -1, если конец потока уже достигнут Броски: IOException
- String readLine (): чтение строки текста. Каждый раз, когда считывается терминатор строки, номер текущей строки увеличивается.
Синтаксис: public String readLine () выбрасывает IOException Возврат: Строка, содержащая содержимое строки, не включая строку символы завершения или ноль, если был достигнут конец потока Броски: IOException
- void reset (): сбросить поток до самой последней отметки.
Синтаксис: public void reset () выбрасывает IOException Броски: IOException
- void setLineNumber (int lineNumber): установить текущий номер строки.
Синтаксис: public void setLineNumber (int lineNumber) Параметры: lineNumber - int, определяющий номер строки
- long skip (long n): пропускать символы.
Синтаксис: public long skip (long n) выбрасывает IOException Параметры: n - количество символов, которые нужно пропустить Возврат: Количество фактически пропущенных символов Броски: IOException IllegalArgumentException
Program :
//Java program demonstrating LineNumberReader methods import java.io.FileReader; import java.io.IOException; import java.io.LineNumberReader; class LineNumberReaderDemo { public static void main(String[] args) throws IOException { FileReader fr = new FileReader( "file.txt" ); LineNumberReader lnr = new LineNumberReader(fr); char c[] = new char [ 20 ]; //illustrating setLineNumber() lnr.setLineNumber( 0 ); //illustrating set System.out.println(lnr.getLineNumber()); //illustrating markSupported() method if (lnr.markSupported()) { System.out.println( "mark() method is supported" ); //illustrating mark method lnr.mark( 100 ); } /*File Contents * This is first line this is second line This is third line */ //skipping 19 characters lnr.skip( 19 ); //illustrating ready() method if (lnr.ready()) { //illustrating readLine() method System.out.println(lnr.readLine()); //illustrating read(char c[],int off,int len) lnr.read(c); for ( int i = 0 ; i < 20 ; i++) { System.out.print(c[i]); } //illustrating reset() method lnr.reset(); for ( int i = 0 ; i < 18 ; i++) { //illustrating read() method System.out.print(( char )lnr.read()); } int ch; //illustrating read() method System.out.println(lnr.readLine()); while ((ch = lnr.read())== 1 ) System.out.print(( char )ch); } //close the stream lnr.close(); } } |
Выход :
0 mark() method is supported this is second line This is third line This is first line
Автор статьи - Нишант Шарма . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.
Вниманию читателя! Не переставай учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .