Clase Java.io.LineNumberReader en Java

Un flujo de entrada de caracteres almacenado en búfer que realiza un seguimiento de los números de línea. Esta clase define los métodos setLineNumber(int) y getLineNumber() para establecer y obtener el número de línea actual, respectivamente.

  • De manera predeterminada, la numeración de líneas comienza en 0. Este número aumenta en cada terminador de línea a medida que se leen los datos y se puede cambiar con una llamada a setLineNumber(int).
  • Tenga en cuenta, sin embargo, que setLineNumber(int) en realidad no cambia la posición actual en la transmisión; solo cambia el valor que devolverá getLineNumber().
  • Se considera que una línea termina con un salto de línea (‘\n’), un retorno de carro (‘\r’) o un retorno de carro seguido inmediatamente por un salto de línea.

Constructores :

  • LineNumberReader(Reader in) : Crea un nuevo lector de numeración de líneas, utilizando el tamaño de búfer de entrada predeterminado.
  • LineNumberReader(Reader in, int sz) : crea un nuevo lector de numeración de líneas, leyendo caracteres en un búfer del tamaño dado.

Métodos :

  • int getLineNumber() : Obtiene el número de línea actual.
    Syntax :public int getLineNumber()
    Returns:
    The current line number
  • void mark(int readAheadLimit) : marca la posición actual en la secuencia. Las llamadas posteriores a reset() intentarán reposicionar la secuencia en este punto y también restablecerán el número de línea de manera adecuada.
    Syntax :public void mark(int readAheadLimit)
              throws IOException
    Parameters:
    readAheadLimit - Limit on the number of characters that may be read 
    while still preserving the mark. After reading this many characters, 
    attempting to reset the stream may fail.
    Throws:
    IOException
  • int read() : lee un solo carácter. Los terminadores de línea se comprimen en caracteres de nueva línea (‘\n’). Cada vez que se lee un terminador de línea, se incrementa el número de línea actual.
    Syntax :public int read()
             throws IOException
    Returns:
    The character read, or -1 if the end of the stream has been reached
    Throws:
    IOException
  • int read(char[] cbuf, int off, int len) : lee caracteres en una parte de una array. Cada vez que se lee un terminador de línea, se incrementa el número de línea actual.
    Syntax :public int read(char[] cbuf,
           int off,
           int len)
             throws IOException
    Parameters:
    cbuf - Destination buffer
    off - Offset at which to start storing characters
    len - Maximum number of characters to read
    Returns:
    The number of bytes read, or -1 if the end of the stream has already been reached
    Throws:
    IOException
  • String readLine() : lee una línea de texto. Cada vez que se lee un terminador de línea, se incrementa el número de línea actual.
    Syntax :public String readLine()
                    throws IOException
    Returns:
    A String containing the contents of the line, not including any line 
    termination characters, or null if the end of the stream has been reached
    Throws:
    IOException
  • void reset() : Restablece la transmisión a la marca más reciente.
    Syntax :public void reset()
               throws IOException
    Throws:
    IOException
  • void setLineNumber(int lineNumber) : Establece el número de línea actual.
    Syntax :public void setLineNumber(int lineNumber)
    Parameters:
    lineNumber - An int specifying the line number
  • long skip(long n) : Saltar caracteres.
    Syntax :public long skip(long n)
              throws IOException
    Parameters:
    n - The number of characters to skip
    Returns:
    The number of characters actually skipped
    Throws:
    IOException
    IllegalArgumentException

Programa :

//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();
    }
}

Producción :

0
mark() method is supported
this is second line
This is third line
This is first line

Este artículo es una contribución de Nishant Sharma . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *