Leggere file in Java con LineNumberReader

Leggere file in Java con LineNumberReader

In genere usiamo BufferedReader per leggere file riga per riga in Java; ma ho scoperto che esiste anche LineNumberReader!

Come vedete estende proprio BufferedReader, ed alcuni metodi utili per gestire la riga del documento.

In sostanza ci permette di visualizzare il numero di riga corrente, e di settare il numero di riga corrente:

  • getLineNumber
  • setLineNumber

Vediamo due esempi, partendo da un file di testo semplice:

ciao
come
stai?

Qui leggiamo tutte le righe e stampiamo il numero di riga:

import java.io.*;

public class Main {

    public static void main(String[] args) {
        try {
            Reader reader = new FileReader("test.txt");
            try (LineNumberReader lineNumberReader = new LineNumberReader(reader)) {
                String line = null;
                while ((line = lineNumberReader.readLine()) != null) {
                    System.out.println(lineNumberReader.getLineNumber() + ": " + line);
                }
            }
        } catch (IOException ex) {
            ex.getMessage();
        }
    }

}

Risultato:

1: ciao
2: come
3: stai?

Adesso ci spostiamo prima di leggere il file:

import java.io.*;

public class Main {

    public static void main(String[] args) {
        try {
            Reader reader = new FileReader("test.txt");
            try (LineNumberReader lineNumberReader = new LineNumberReader(reader)) {
                lineNumberReader.setLineNumber(1);
                String line = null;
                while ((line = lineNumberReader.readLine()) != null) {
                    System.out.println(lineNumberReader.getLineNumber() + ": " + line);
                }
            }
        } catch (IOException ex) {
            ex.getMessage();
        }
    }

}

Risultato:

2: ciao
3: come
4: stai?

Enjoy!




Share

Commentami!

About Mattepuffo.com

Blog dedicato all'informatica e alla programmazione!
Tutti i contenuti di questo blog, tranne casi particolari, sono sotto licenza Licenza Creative Commons Creative Commons Attribution-Noncommercial-Share Alike 2.5. .

2664 articoli
310 commenti
19 progetti
Altri link
  • About
  • Scrivimi
  • Copyright
  • Sitemap
  • matteo.ferrone@yahoo.it
  • GitHub
  • Privacy Policy