Diferència entre revisions de la pàgina «DAM-M3-UF5. Lectura i escriptura. Fitxers»
(Es crea la pàgina amb «Hi ha múltiples ocasions on cal introduir dades a un programa o mostra-les a la sortida, per exemple: Línia de comandes Formulari amb elements gràfics Fitxers Pip...».) |
|||
Línia 1: | Línia 1: | ||
+ | torna [[ M3 - Programació ]] | ||
+ | |||
+ | == Lectura i escriptura == | ||
+ | |||
Hi ha múltiples ocasions on cal introduir dades a un programa o mostra-les a la sortida, per exemple: | Hi ha múltiples ocasions on cal introduir dades a un programa o mostra-les a la sortida, per exemple: | ||
− | Línia de comandes | + | * Línia de comandes |
+ | |||
+ | * Formulari amb elements gràfics | ||
+ | |||
+ | * Fitxers | ||
+ | |||
+ | * Pipes o sockets | ||
+ | |||
+ | |||
+ | === Mètodes bàsics === | ||
+ | |||
+ | A través de la entrada i sortida estàndard | ||
+ | |||
+ | * System.in | ||
+ | * System.out | ||
+ | |||
+ | === La classe Scanner === | ||
+ | |||
+ | La classe Scanner és una funció d'utilitat simple per a la lectura de dades tipus primitius (int, String, etc...) o qualsevol Objecte que implementi ''Readable''. | ||
+ | |||
+ | Trenca la lectura segons el delimitador (Per defecte un espai en blanc, encara que es pot modificar) | ||
+ | |||
+ | <pre> | ||
+ | Scanner sc = new Scanner( System.in ); | ||
+ | |||
+ | System.out.print( "Escriu un text: " ); | ||
+ | String dada = sc.next(); | ||
+ | System.out.println( "Has escrit: " + dada); | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | A més implementa la interface Iterator de manera que permet gestionar la lectura amb les operacions de control dels iteradors | ||
+ | |||
+ | * hasNext() | ||
+ | * next() | ||
+ | |||
+ | <pre> | ||
+ | do { | ||
+ | System.out.print( "Escriu \"Fi\" per acabar: " ); | ||
+ | dada = sc.next(); | ||
+ | |||
+ | } while (!dada.equals("Fi")); | ||
+ | </pre> | ||
+ | |||
+ | També permet definir diferents tipus d'entrada com fitxers o cadenes de text, i té mètodes específics per a la lectura d'enters, decimals, etc... | ||
+ | |||
+ | |||
+ | <pre> | ||
+ | String dada = "aaa bbb ccc ddd"; | ||
+ | Scanner sc = new Scanner(dada); | ||
+ | do { | ||
+ | dada = sc.next(); | ||
+ | System.out.println( "Conté: " + dada); | ||
+ | } while (sc.hasNext()); | ||
+ | |||
+ | dada = "1 2 3 4"; | ||
+ | Scanner sc = new Scanner(dada); | ||
+ | do { | ||
+ | System.out.println( "Conté: " + sc.nextInt()); | ||
+ | } while (sc.hasNextInt()); | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | |||
+ | === Readers / Writers === | ||
+ | |||
+ | A part dels sistemes anteriors, | ||
− | + | Java proporciona una capa d'utilitats entre la entrada i l'usuari que permet fer un tractament semblant independentment del tipus d'entrada o sortida que es faci servir. | |
− | + | Gestiona aquestes operacions establint uns corrents o canals ('''stream'''), a través dels quals trasllada blocs de dades ('''buffer'''). | |
− | + | Les classes utilitzades hereten de | |
+ | java.io.Reader | ||
− | + | i de | |
+ | java.io.Writer |
Revisió del 23:02, 6 set 2012
torna M3 - Programació
Lectura i escriptura
Hi ha múltiples ocasions on cal introduir dades a un programa o mostra-les a la sortida, per exemple:
- Línia de comandes
- Formulari amb elements gràfics
- Fitxers
- Pipes o sockets
Mètodes bàsics
A través de la entrada i sortida estàndard
- System.in
- System.out
La classe Scanner
La classe Scanner és una funció d'utilitat simple per a la lectura de dades tipus primitius (int, String, etc...) o qualsevol Objecte que implementi Readable.
Trenca la lectura segons el delimitador (Per defecte un espai en blanc, encara que es pot modificar)
Scanner sc = new Scanner( System.in ); System.out.print( "Escriu un text: " ); String dada = sc.next(); System.out.println( "Has escrit: " + dada);
A més implementa la interface Iterator de manera que permet gestionar la lectura amb les operacions de control dels iteradors
- hasNext()
- next()
do { System.out.print( "Escriu \"Fi\" per acabar: " ); dada = sc.next(); } while (!dada.equals("Fi"));
També permet definir diferents tipus d'entrada com fitxers o cadenes de text, i té mètodes específics per a la lectura d'enters, decimals, etc...
String dada = "aaa bbb ccc ddd"; Scanner sc = new Scanner(dada); do { dada = sc.next(); System.out.println( "Conté: " + dada); } while (sc.hasNext()); dada = "1 2 3 4"; Scanner sc = new Scanner(dada); do { System.out.println( "Conté: " + sc.nextInt()); } while (sc.hasNextInt());
Readers / Writers
A part dels sistemes anteriors,
Java proporciona una capa d'utilitats entre la entrada i l'usuari que permet fer un tractament semblant independentment del tipus d'entrada o sortida que es faci servir.
Gestiona aquestes operacions establint uns corrents o canals (stream), a través dels quals trasllada blocs de dades (buffer).
Les classes utilitzades hereten de java.io.Reader
i de java.io.Writer