fiji.io
Class SimpleReader

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

public class SimpleReader
extends java.io.FilterReader

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

Solitamente, un SimpleStream 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 SimpleStream che accede i 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.)


Constructor Summary
SimpleReader()
          Crea un SimpleReader corrispondente al flusso standard di ingresso, System.in (cioè la tastiera).
SimpleReader(java.io.Reader in)
          Crea un SimpleReader corrispondente al flusso ingresso pre-esistente in.
SimpleReader(java.lang.String s)
          Crea un SimpleReader 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 readBoolean()
          Legge un boolean (delimitato da spazi).
 char readChar()
          Legge un singolo carattere.
 double readDouble()
          Legge un numero razionale (delimitato da spazi).
 float readFloat()
          Legge un numero razionale (delimitato da spazi).
 int readInt()
          Legge un intero (delimitato da spazi).
 java.lang.String readLine()
          Legge una linea di testo.
 void readln()
          Consuma il resto della linea corrente, compresi i caratteri di terminazione di linea.
 long readLong()
          Legge un intero (delimitato da spazi).
 short readShort()
          Legge un intero (delimitato da spazi).
 java.lang.String readString()
          Legge una parola senza spazi al suo interno.
 
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
 

Constructor Detail

SimpleReader

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


SimpleReader

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

Esempio: Lettura e somma di due numeri interi:

     SimpleReader in = new SimpleReader("2 3"); 
     int a, b, somma; 
     a = in.readInt(); 
     b = in.readInt(); 
     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.)


SimpleReader

public SimpleReader(java.io.Reader in)
Crea un SimpleReader 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 { 
     SimpleReader fileIn = 
             new SimpleReader(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)); 
     SimpleReader netIn = new SimpleReader(r); 
     ... scansione della pagina Web ... 
 } catch (IOException e) { 
     e.printStackTrace(System.out); 
     System.exit(-1); 
 } 
 

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

readString

public java.lang.String readString()
Legge 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 readLine().

Returns:
La stringa letta.

readChar

public char readChar()
Legge un singolo carattere.

Gli eventuali caratteri di fine linea vengono ignorati.

Returns:
Il carattere letto.

readLong

public long readLong()
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.

readInt

public int readInt()
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.

readShort

public short readShort()
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.

readFloat

public float readFloat()
Legge un numero razionale (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.

readDouble

public double readDouble()
Legge un numero razionale (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.

readBoolean

public boolean readBoolean()
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.

readLine

public java.lang.String readLine()
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.