fiji.io
Class Lettore

java.lang.Object
  |
  +--java.io.Reader
        |
        +--java.io.FilterReader
              |
              +--fiji.io.Lettore

public class Lettore
extends java.io.FilterReader

Un oggetto Lettore permette di leggere, in modo semplice, dati da un flusso di ingresso. In particolare, un oggetto Lettore consente la lettura di dati (in formato testuale) corrispondenti ai vari tipi primitivi di Java. Sono fornite funzionalità che permettono di verificare se la scansione è giunta alla fina della riga o del flusso di ingresso. L'oggetto Lettore.in è un oggetto Lettore che rappresenta in modo conveniente la tastiera del calcolatore System.in.

Solitamente, un Lettore viene creato senza specificare argomenti, e questo corrisponde a fargli accedere i dati dal flusso standard di ingresso System.in (cioè, dalla tastiera). E' possibile anche creare un Lettore per accedere ai dati di un altro flusso di ingresso pre-esistente, ad esempio corrispondente a una stringa, un file di testo o al contenuto di una pagina Web. (Si veda in proposito la documentazione associata ai costruttori.)


Field Summary
static Lettore in
          Un oggetto che rappresenta la tastiera del calcolatore.
 
Constructor Summary
Lettore()
          Crea un Lettore corrispondente al flusso standard di ingresso, System.in (cioè la tastiera).
Lettore(java.io.Reader rdr)
          Crea un Lettore corrispondente al flusso ingresso pre-esistente in.
Lettore(java.lang.String s)
          Crea un Lettore per leggere dalla stringa s.
 
Method Summary
 boolean eof()
          Verifica se è stata raggiunta la fine del flusso.
 boolean eoln()
          Verifica se è stata raggiunta la fine della linea corrente.
 boolean leggiBoolean()
          Legge un boolean (delimitato da spazi).
 char leggiChar()
          Legge un singolo carattere.
 double leggiDouble()
          Legge un numero reale (delimitato da spazi).
 float leggiFloat()
          Legge un numero reale (delimitato da spazi).
 int leggiInt()
          Legge un intero (delimitato da spazi).
 java.lang.String leggiLinea()
          Legge una linea di testo.
 long leggiLong()
          Legge un intero (delimitato da spazi).
 short leggiShort()
          Legge un intero (delimitato da spazi).
 java.lang.String leggiString()
          Legge una stringa, ovvero una parola senza spazi al suo interno.
 java.lang.String leggiToken()
          Legge un token, ovvero una parola senza spazi al suo interno.
 void readln()
          Consuma il resto della linea corrente, compresi i caratteri di terminazione di linea.
 
Methods inherited from class java.io.FilterReader
close, mark, markSupported, read, read, ready, reset, skip
 
Methods inherited from class java.io.Reader
read
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

in

public static Lettore in
Un oggetto che rappresenta la tastiera del calcolatore.

Constructor Detail

Lettore

public Lettore()
Crea un Lettore corrispondente al flusso standard di ingresso, System.in (cioè la tastiera).


Lettore

public Lettore(java.lang.String s)
Crea un Lettore per leggere dalla stringa s.

Esempio: Lettura e somma di due numeri interi:

     Lettore in = new Lettore("2 3");
     int a, b, somma;
     a = in.leggiInt();
     b = in.LeggiInt();
     somma = a+b;
 

La stringa s viene eventualmente estesa con un terminatore di linea. (Ovvero, viene garantito che la stringa da cui verrà effettuata la lettura termini con un terminatore di linea. Questo risolve alcuni problemi riscontrati in pratica.)


Lettore

public Lettore(java.io.Reader rdr)
Crea un Lettore corrispondente al flusso ingresso pre-esistente in.

Il flusso di ingresso pre-esistente può essere, ad esempio, un file di testo oppure una pagina Web. Nei due casi in esempio, si possono usare rispettivamente le seguenti seguenze di istruzioni:

Lettura da un file di testo:

 // import java.io.*;
 // legge dal file "nomefile"
 try {
     Lettore fileIn =
             new Lettore(new FileReader("nomefile"));
     ... scansione del file di testo ...
 } catch (FileNotFoundException e) {
     e.printStackTrace(System.out);
     System.exit(-1);
 }
 

Lettura da una pagina Web:

 // import java.io.*;
 // import java.net.*;
 // legge dalla pagina di URL "url"
 try {
     URL u = new URL("url");
     URLConnection uc = u.openConnection();
     InputStream is = uc.getInputStream();
     Reader r = new BufferedReader(new InputStreamReader(is));
     Lettore netIn = new Lettore(r);
     ... scansione della pagina Web ...
 } catch (IOException e) {
     e.printStackTrace(System.out);
     System.exit(-1);
 }
 

Parameters:
rdr - Il flusso di ingresso pre-esistente.
Method Detail

leggiToken

public java.lang.String leggiToken()
Legge un token, ovvero una parola senza spazi al suo interno.

Ignorando gli eventuali spazi bianchi iniziali, legge una parola composta da una sequenza non vuota di caratteri che con comprende spazi bianchi e la restituisce come stringa. Una parola è quindi una sequenza di caratteri stampabili (non bianchi), delimitata da spazi e/o dalla fine della linea (o del flusso). Tutti i caratteri che precedono il primo carattere stampabile sono considerati spazi bianchi, e quindi ignorati perché considerati non appartenenti alla parola. La parola si considera terminata dal primo spazio bianco o terminazione di linea (o del flusso) che segue il primo carattere stampabile. Il carattere che termina la parola (spazio bianco o carattere di fine linea) viene considerato scandito.

Se si vuole leggere una stringa disposta su una linea di testo, restituendo anche eventuali spazi iniziali, interi e finali della linea di testo, è necessario usare il metodo String leggiLinea().

Returns:
Il token letto.

leggiString

public java.lang.String leggiString()
Legge una stringa, ovvero una parola senza spazi al suo interno.

Ignorando gli eventuali spazi bianchi iniziali, legge una parola composta da una sequenza non vuota di caratteri che con comprende spazi bianchi e la restituisce come stringa. Una parola è quindi una sequenza di caratteri stampabili (non bianchi), delimitata da spazi e/o dalla fine della linea (o del flusso). Tutti i caratteri che precedono il primo carattere stampabile sono considerati spazi bianchi, e quindi ignorati perché considerati non appartenenti alla parola. La parola si considera terminata dal primo spazio bianco o terminazione di linea (o del flusso) che segue il primo carattere stampabile. Il carattere che termina la parola (spazio bianco o carattere di fine linea) viene considerato scandito.

Se si vuole leggere una stringa disposta su una linea di testo, restituendo anche eventuali spazi iniziali, interi e finali della linea di testo, è necessario usare il metodo String leggiLinea().

Returns:
La stringa letta.

leggiChar

public char leggiChar()
Legge un singolo carattere.

Gli eventuali caratteri di fine linea vengono ignorati.

Returns:
Il carattere letto.

leggiLong

public long leggiLong()
Legge un intero (delimitato da spazi).

Il numerale deve essere espresso in base 10, e può iniziare con un segno negativo. Tutti i caratteri che precedono il primo carattere stampabile sono considerati spazi bianchi, e non appartengono al numerale. Il numerale si considera terminato dal primo spazio bianco o terminazione di linea (o del flusso) che segue il primo carattere stampabile del numerale. Il carattere che termina il numerale (spazio bianco o carattere di fine linea) si considera scandito.

Returns:
Il valore long letto.

leggiInt

public int leggiInt()
Legge un intero (delimitato da spazi).

Il numerale deve essere espresso in base 10, e può iniziare con un segno negativo. Tutti i caratteri che precedono il primo carattere stampabile sono considerati spazi bianchi, e non appartengono al numerale. Il numerale si considera terminato dal primo spazio bianco o terminazione di linea (o del flusso) che segue il primo carattere stampabile del numerale. Il carattere che termina il numerale (spazio bianco o carattere di fine linea) si considera scandito.

Returns:
Il valore int letto.

leggiShort

public short leggiShort()
Legge un intero (delimitato da spazi).

Il numerale deve essere espresso in base 10, e può iniziare con un segno negativo. Tutti i caratteri che precedono il primo carattere stampabile sono considerati spazi bianchi, e non appartengono al numerale. Il numerale si considera terminato dal primo spazio bianco o terminazione di linea (o del flusso) che segue il primo carattere stampabile del numerale. Il carattere che termina il numerale (spazio bianco o carattere di fine linea) si considera scandito.

Returns:
Il valore short letto.

leggiFloat

public float leggiFloat()
Legge un numero reale (delimitato da spazi).

Il numerale deve essere espresso in base 10, e può iniziare con un segno negativo. Tutti i caratteri che precedono il primo carattere stampabile sono considerati spazi bianchi, e non appartengono al numerale. Il numerale si considera terminato dal primo spazio bianco o terminazione di linea (o del flusso) che segue il primo carattere stampabile del numerale. Il carattere che termina il numerale (spazio bianco o carattere di fine linea) si considera scandito.

Returns:
Il valore float letto.

leggiDouble

public double leggiDouble()
Legge un numero reale (delimitato da spazi).

Il numerale deve essere espresso in base 10, e può iniziare con un segno negativo. Tutti i caratteri che precedono il primo carattere stampabile sono considerati spazi bianchi, e non appartengono al numerale. Il numerale si considera terminato dal primo spazio bianco o terminazione di linea (o del flusso) che segue il primo carattere stampabile del numerale. Il carattere che termina il numerale (spazio bianco o carattere di fine linea) si considera scandito.

Returns:
Il valore double letto.

leggiBoolean

public boolean leggiBoolean()
Legge un boolean (delimitato da spazi).

I letterali boolean sono della forma true oppure false. Altri letterali sono interpretati come false.

Tutti i caratteri che precedono il primo carattere stampabile sono considerati spazi bianchi, e non appartengono al letterale. Il letterale si considera terminato dal primo spazio bianco o terminazione di linea (o del flusso) che segue il primo carattere stampabile del numerale. Il carattere che termina il letterale (spazio bianco o carattere di fine linea) si considera scandito.

Returns:
Il valore boolean letto.

leggiLinea

public java.lang.String leggiLinea()
Legge una linea di testo.

La stringa restituita non comprende i caratteri di terminazione della linea.

Returns:
La porzione della linea corrente non ancora scandita.

readln

public void readln()
Consuma il resto della linea corrente, compresi i caratteri di terminazione di linea.


eof

public boolean eof()
Verifica se è stata raggiunta la fine del flusso.

Returns:
true se è stata raggiunta la fine del flusso, false altrimenti.

eoln

public boolean eoln()
Verifica se è stata raggiunta la fine della linea corrente.

La linea si considera terminata quando viene scandita una delle sequenti sequenze di caratteri: '\r', '\n', oppure '\r' seguito da '\n', oppure quando viene raggiunta la fine del flusso.

Returns:
true se è stata raggiunta la fine della linea corrente, false altrimenti.