Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1
Lectura y escritura en los Lectura y escritura en los
flujos estándar flujos estándar
class Salida {
Los flujos se implementan en las clases del public static void
paquete java.io main(String[]args){
System.out int var=5;
n Instancia de la clase PrintStream - flujo de bytes System.out.print(var);
de salida System.out.println(var);
n Metodos de utilidad - impresión de datos System.out.print()"hola") ;
w print() escribe en el buffer System.out.flush();
w println() escribe en el buffer y flush. Deja el cursor en la
siguiente línea. }
w flush() vacía el buffer de salida escribiendo su contenido }
2
Paquete java.io - Flujos de Paquete java.io - Flujos de
caracteres bytes
Streams Streams
Writer
Reader
FileWriter
FileReader
3
Lectura de un Caracter Lectura de un Entero
public static
public static char
char damePrimerChar()
damePrimerChar() throws
throws public
public int dameEntero()
int dameEntero() throws
throws IOException
IOException {{
IOException {{
IOException String
String s=leeString();
s=leeString();
String s=leeString();
String s=leeString(); return
return Integer.parseInt(s);
Integer.parseInt(s);
return s.charAt(0);
return s.charAt(0);
}}
}}
El método charAt() de la clase String devuelve el El método parseInt( ) de la clase Integer convierte de
carácter de la posición dada String a tipo int
Programa
Lee bytes Lee bytes y los pasa Utiliza un búfer para
El envoltorio Float tiene los correspondientes métodos a caracteres Unicode mejorar eficiencia
valueOf() y floatValue() de lectura de carateres
Ejemplo - combinación de
flujos La clase Teclado -- Javadoc
package es.ucm.esi;
es.ucm.esi;
import java.io.*;
import java.io.*; package
import java.io.*;
import java.io.*;
class Eco
class Eco {{ /**
/**
public static
public static void
void main
main (String[]
(String[] args)
args) ** <p><p>
<p><p> LaLa clase
clase <em>Teclado</em>
<em>Teclado</em> permite
permite hacer
hacer transparente
transparente lala lectura
lectura
throws IOException
throws IOException sencilla
sencilla
{ ** de
de los
los tipos
tipos mas
mas comunes
comunes de
de datos
datos desde
desde lala entrada
entrada estandar*/
estandar*/
{ public class
class Teclado
Teclado {{
public
BufferedReader entradaEstandar
BufferedReader entradaEstandar == new
new BufferedReader
BufferedReader /** variable
variable dede clase
clase asignada
asignada aa la
la entrada
entrada estandar
estandar del
del sistema
sistema */
*/
/**
(new InputStreamReader(System.in));
(new InputStreamReader(System.in)); public static
public static BufferedReader
BufferedReader entrada
entrada ==
String mensaje;
String mensaje; new BufferedReader(new
new BufferedReader(new InputStreamReader(System.in));
InputStreamReader(System.in));
/** lee
/** lee una
una cadena
cadena desde
desde lala entrada
entrada estandar
estandar
System.out.println(”Introducir
System.out.println (”Introducir una
una linea
linea de
de texto:");
texto:");
** @return cadena
@return cadena de de tipo
tipo String
String
mensaje == entradaEstandar.readLine();
mensaje entradaEstandar.readLine(); ** @exception excepciones No
@exception excepciones No lanza ningunlanza ningun tipo
tipo de
de excepcion
excepcion
System.out.println(”Introducido:\""+mensaje
System.out.println (”Introducido:\""+mensaje ++ "\"");
"\""); de estrada/salida
de estrada/salida */
*/
public static
static String
String leerString()
leerString() {{
}} public
String cadena="";
cadena="";
String
}} try {{
try
cadena == new
cadena new String(entrada.readLine());
String(entrada.readLine());
}catch (IOException
}catch (IOException e) e) {{
System.out.println("Error
System.out.println("Error de de E/S");
E/S"); }}
Java Entrada y Salida 23 return cadena;
cadena; Java// la claseEntrada y Salida continua 24
return }} // Teclado
la clase Teclado continua
4
La clase Teclado Ficheros de texto
// continuación
continuación de de la
la clase
clase teclado
teclado
// BufferedReader FileReader FileInputStream
/** lee
/** lee un
un numero
numero entero
entero desdedesde lala entrada
entrada estandar
estandar
** @return numero
@return numero entero
entero de de tipo
tipo int
int text bytes
** @exception excepciones
@exception excepciones No No lanza
lanza ningun
ningun tipo
tipo de
de excepcion
excepcion de
de
estrada/salida */
estrada/salida */
public static
public static intint leerInt()
leerInt() {{ bytes
int entero
entero == 0; 0; chars
int
boolean error
boolean error == false
false;; File
do {{
do try {{
try
error = false ;;
error = false chars
entero ==
entero bytes
Integer.valueOf(entrada.readLine()).intValue();
Integer.valueOf(entrada.readLine()).intValue(); text
}catch (NumberFormatException e1)
}catch (NumberFormatException e1) {{ bytes
error == true;
error true;
System.out.println("Error
System.out.println("Error en el en el formato
formato del
del numero,
numero,
intentelo de
intentelo de nuevo.");
nuevo."); BufferedWriter FileWriter FileOutputStream
}catch (IOException
}catch (IOException e) e) {{
System.out.println("Error de
System.out.println("Error de E/S");}
E/S");}
}} while
while (error);
(error);
return entero;
return entero;
Javala clase Entrada y Salida 25 Java Entrada y Salida 26
}} }} //
// final
final de de Teclado
la clase Teclado
5
Ficheros de texto con datos
numéricos Ficheros
// lectura
// lectura dede datos
datos Clase File
BufferedReader entrada
BufferedReader entrada =new
=new
BufferedReader(new FileReader("hola.txt"));
BufferedReader(new FileReader("hola.txt")); n Representa un nombre de ruta a un fichero
String s,
String s, s2
s2 == new
new String();
String(); o a un subdirectorio del disco
while((s == entrada.readLine())!=
while((s entrada.readLine())!= null)
null) n Constructores
s2 == s2
s2 s2 ++ ss ++ "\n";
"\n";
w File(String ruta)
System.out.println("Texto leido:"
System.out.println("Texto leido:" ++
"\n" ++ s2);
"\n" s2); w File(String ruta, String nombre)
entrada.close();
entrada.close(); w File(File directorio, String nombre)
}} catch
catch (java.io.IOException
(java.io.IOException e) e)
{System.out.println("excepcion");}
{System.out.println("excepcion");}
}}
}}
Java Entrada y Salida 31 Java Entrada y Salida 32
6
Lectura de fichero a objeto
import java.io.*;
import java.io.*;
class Main
class Main{{
public static
public static void
void main(String[]
main(String[] args){ args){
try {{
try
FileInputStream fis =
FileInputStream fis = null; null;
ObjectInputStream ois
ObjectInputStream ois == null;
null;
fis == new
fis new FileInputStream
FileInputStream("SerializedObj.obj");
("SerializedObj.obj");
ois == new
ois new ObjectInputStream(fis);
ObjectInputStream(fis);
SampleObject newObj1
SampleObject newObj1 == (SampleObject)
(SampleObject) ois.readObject();
ois.readObject();
SampleObject newObj2
SampleObject newObj2 == (SampleObject)
(SampleObject) ois.readObject();
ois.readObject();
ois.close();
ois.close();
System.out.println("SampleObject1 name: "" ++
System.out.println("SampleObject1 name:
newObj1.getName());
newObj1.getName());
System.out.println("SampleObject2 name:
System.out.println("SampleObject2 name: "" ++
newObj2.getName());
newObj2.getName());
}catch(Exception e){
}catch(Exception e){
System.out.println("Main: main():
System.out.println("Main: main(): "" ++ e); e);
}} Java Entrada y Salida 37
}}
}}