Entrada y salida de datos. Entrada y salida de datos. Flujos estándar. Flujos estándar. Operación y flujos estándar en java

Documentos relacionados
Entrada y Salida con Java

Entrada y Salida de datos

Programación Orientada a Objetos. Tema 7: Persistencia

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Tipos DataInputStream/DataOutputStream: L/E de datos de tipo simple y Cadenas (Strings) ObjectInputStream/ObjectOutputStream: para persistencia de obj

Por el contrario System.in es un byte Stream sin caracteristicas de character Stream.

Flujos (streams) Programación. Licenciatura Lingüística y Nuevas Tecnologias Nadjet Bouayad-Agha

String s = t.readline() 4. Si el valor leído desde teclado, se requiere almacenar en una variable de un tipo diferente a

Universidad de Cantabria

Ficheros y streams. Desde el punto de vista de Java, cada fichero no es más que una secuencia o flujo de bytes [stream].

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Parte I: Programación en un lenguaje orientado a objetos

Resumen de Ficheros en Java. FileOutputStream(String nombre_fichero, boolean añadir)

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Excepciones y E/S Java y Servicios Web I Master en Ingeniería Matemática

7. Otras sentencias Sentencia break. 84 A. García-Beltrán y J.M. Arranz

Introduciendo datos desde el

TEMA 9. Agenda. Ficheros

Información de la lectura en un programa.

Prácticas de Programación

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA con BlueJ

Resumen Clase Anterior Ejercicio Clase 16 Archivos Ejemplo. ING1310 Introducción a la Computación. Archivos

Tema 4. Excepciones en Java

Introducción a Java 10/02/2011. Tokens. Juan Manuel Fernández Peña Curso Rev Tokens. Tokens

Ejemplos de uso de ficheros de acceso secuencial

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

Práctica III: Streams, Readers y Writers

Entrada/Salida. Independencia del SO. La clase File. Métodos de instancia I. Ficheros. La clase File

Nota: en el directorio de prácticas y en PoliformaT puedes descargar los ficheros de código fuente de los ejemplos que aparecen en este anexo.

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES (MÓDULO 2)

Práctica #5: Uso de control de flujo, Excepciones y Lectura Estándar

James Gosling, creador de Java

Java IO - Streams. OutputStream os = new OutputStream(); Departamento de Matemáticas y Computación Grado en Informática Programación de Bases de Datos

Procesamiento distribuido en Java

Guía - Taller # 2 (JAVA)

Serialización de Objetos en Java. Dra. Maricela Bravo

Práctica 4: Herencia. Objetivos:

Entrada / Salida rápida en C, C++ y Java

Objetivos. Índice. 1. Paquetes

IIC1103 Introducción a la Programación. Ayudantía: Archivos

Ejercicios de Programación Tema 7. Programación Orientada a Objetos

Objetivos. El alumno empleará el concepto de excepción en la programación orientada a objetos para el manejo de errores de ejecución.

Bibliografía (Java) Java: Introducción a Java

Estructura de datos y Programación

Si bien hay gran cantidad de excepciones, todas derivan de la clase Exception, además de las excepciones ya manejadas, se pueden crear propias.

Capítulo 8: Excepciones página 135

Entrada y salida en un lenguaje orientado a objetos

Sockets. Los sockets son un mecanismo de comunicación entre procesos que se utiliza en Internet.

Docente: Juan Carlos Pérez P. Alumno : Fecha : Nota:

Persistencia. Persistencia significa trascender en el tiempo y/o en el espacio

Existen dos tipos de excepciones en Java: comprobadas y sin comprobar.

1.- FUNDAMENTOS FUNCIONAMIENTO GENÉRICO JAVA SOCKETS Creación de Streams de Entrada...7

CURSO : Programacion Java DOCENTE : ING. JUAN ZEVALLOS VALLE

Ficheros de acceso aleatorio

StringBuffer, Math y Wrapper

Streams y manejo de entrada y salida (Input & Output)

Entrada y salida de archivos

INDICE Prologo 1 Recorrido rápido de java 2 Clases y objetos 3 Extensión de clases

3URJUDPDFLyQ-DYD. 3UiFWLFD. -DYLHU*DUFtDGH-DOyQÂ -RVp,JQDFLR5RGUtJXH] $OIRQVR%UD]iOH]Â $OEHUWR/DU]DEDOÂ -HV~V&DOOHMDÂ -RQ*DUFtD

JAVA 1. Introducción

Desarrollo de Aplicaciones Distribuidas. Sockets. Daniel Avellaneda

Los caracteres de Java pueden agruparse en letras, dígitos, espacios en blanco, caracteres especiales, signos de puntuación y secuencias de escape.

Capítulo 5. Programación de aplicaciones de red

a) Reescribir P1 introduciendo un error sintáctico (de compilación), otro de ejecución, y

La clase Integer y sus métodos. Los Operadores (concepto). Operadores Lógicos y a nivel de Bits. Operadores de desplazamiento. Concatenaciones. La Con

Tema 4. Entrada/Salida. Serialización de Objetos.

EXAMEN PROGRAMACIÓN 21 de Septiembre de 2007 INGENIERÍA INFORMÁTICA Primera parte: Cuestiones 1,5 horas

TEMA 1. Introducción a la programación. CONSIDERACIONES GENERALES.

Práctica 3: Introducción a los sockets en Java

Presentación. Programación I. Programación Orientada a Objetos. :: Prof. Yeniffer Peña

Laboratorio de Redes de Comunicaciones Programación con Sockets en Java

Federico Peinado

JAVA - Serializacíon / RMI. (C) Philippe Roose , 2005

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Programación Java. Introducción a Archivos de datos de Entrada

CÁTEDRA DE LENGUAJE DE PROGRAMACIÓN JAVA 2014

5. Cadenas y Entrada/Salida

Programación concurrente y semáforos en Java

Código Fuente. Creamos en C:\ una carpeta para ubicar el código fuente del servidor. En mi caso, he creado una carpeta denominada rmi4

Invocación de métodos remotos en Java: JAVA - RMI

Arreglos de objetos y ArrayList. Archivos en Java Transversal Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Repaso desarrollo de software Parte #1. Jorge Iván Meza Martínez

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

Examen de Métodos de Programación Ingeniería Informática Primera Parte

Librerías de clases fundamentales

Programación interactiva. Oscar Bedoya

TEMA 8. Excepciones en Java. Curso de Java. Manejo de Excepciones

Introducción a Java. Dr. (c) Noé Alejandro Castro Sánchez

Construcciones del Lenguaje Java

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Federico Peinado

Introducción - por qué usarlas?(1)

- Compilar y ejecutar programas en Java - Estructura básica de una clase - El comando javac - El comando java - Introducción al IDE de desarrollo

Tema 2. El lenguaje de programación Java (Parte 1)

El paquete java.io. Entrada y salida en Java. Entrada/Salida. Flujos de datos. La clase File. La clase File. Independencia del SO

10. Algunas clases estándar de Java (I)

Federico Peinado

Transcripción:

Entrada y salida de datos Entrada y salida de datos Java Entrada y Salida 1 Intercambio de datos entre el programa y el exterior Diversidad de dispositivos (fichero, pantalla, red, ) Diversidad de formas de comunicación Modo de acceso: secuencial, aleatorio Información intercambiada: binaria, caracteres, líneas Flujo (Stream) Abstracción de cualquier fuente y/o destino de datos Flujo (stream) Fuente Datos Datos Destino Java Entrada y Salida 2 Flujos estándar Los programas se comunican con flujos y estos flujos actúan como interfaz con el dispositivo o clase asociada Operación independiente del tipo de datos y del dispositivo Mayor flexibilidad (p.e. redirección, combinación) Flujos estándar Flujos estándar Entrada estándar - habitualmente el teclado Salida estándar - habitualmente la pantalla Salida de error - habitualmente la pantalla Dispositivo de entrada (teclado) Flujo entrada Datos Programa Flujo salida Datos Dispositivo de salida (pantalla, disco) Java Entrada y Salida 3 Java Entrada y Salida 4 Operación y flujos estándar en java Lectura y escritura Lectura Abrir un flujo Mientras existan datos disponibles Leer datos Cerrar el flujo Escritura Abrir un flujo Mientras existan datos disponibles Escribir datos Cerrar el flujo Operación y flujos estándar en java Java tiene acceso a la entrada/salida estándar a través de la clase java.lang.system Los flujos estándar son campos estáticos de System Flujos System.in implementa la entrada estándar System.out implementa la salida estándar System.err implementa la salida de error Java Entrada y Salida 5 Java Entrada y Salida 6 1

Lectura y escritura en los flujos estándar Los flujos se implementan en las clases del paquete java.io System.out Instancia de la clase PrintStream - flujo de de salida Metodosde utilidad - impresión de datos print() escribe en el buffer println() escribe en el buffer y flush. Deja el cursor en la siguiente línea. flush() vacía el buffer de salida escribiendo su contenido Lectura y escritura en los flujos estándar class Salida { public static void main(string[]args){ int var=5; System.out.print(var); System.out.println(var); System.out.print()"hola") ; System.out.flush(); Java Entrada y Salida 7 Java Entrada y Salida 8 Lectura y escritura en los flujos estándar System.in Instancia de la clase InputStream - flujo de de entrada Metodos read() permite leer un byte de la entrada como entero skip(n ) ignora n de la entrada available() número de disponibles para leer en la entrada System.err - Funcionamiento similar a System.out Java Entrada y Salida 9 Ejemplo - uso flujos estándar class LecturaDeLinea { public static void main( String args[] ) throws IOException { int c; c; int contador = 0; 0; // // se se lee hasta encontrar el el fin de de línea while( (c (c = System.in.read() )!=!= '\n' ) { contador++; System.out.print( (char) c ); ); System.out.println(); // // Se Se escribe el el cambio de de línea System.err.println( "Contados "+ "+ contador +" +" en en total." ); ); Java Entrada y Salida 10 Streams Los Streams son objetos de I/O con operaciones para aceptar y mandar (ASCII). Se utilizan para leer y escribir datos independientemente de la plataforma. Java Entrada y Salida 11 Clasificación de flujos Representación de la información Flujos de (InputStream, OutputStream) Flujos de caracteres (Reader, Writer) Propósito Entrada - (InputStream, Reader) Salida - (OutputStream, Writer) Entrada/Salida - (RandomAccessFile) Acceso Secuencial Directo o aleatorio - (RandomAccessFile) Por operación Transferencia de datos Transformación de los datos Realizan algún tipo de procesamiento sobre los datos (p.e. buffering, conversiones, filtrados) Java Entrada y Salida 12 2

Paquete java.io - Flujos de caracteres Paquete java.io - Flujos de Flujos que realizan sólo transferencia Flujos que realizan transformación Java Entrada y Salida 13 Java Entrada y Salida 14 Streams Reader Streams Writer BufferedReader InputStreamReader StringReader BufferedWriter OutputStreamWriter StringWriter FileReader FileWriter Java Entrada y Salida 15 Java Entrada y Salida 16 Paquete java.io InputStreamReader Lee de un flujo InputStream y los convierte en caracteres Unicode Métodosde utilidad read () lee un único caracter ready() indica cuando está listo el flujo para lectura BufferedReader Entrada mediante búfer, mejora el rendimiento Método de utilidad readline() lectura de una línea como cadena Lectura de un String InputStreamReader isr = new InputStreamReader(System.in); BufferedReader Teclado = new BufferedReader (isr); String cadena = Teclado.readLine(); El método debe incluir throws IOException Java Entrada y Salida 17 Java Entrada y Salida 18 3

Lectura de un Caracter public static char dameprimerchar() throws IOException { String s=leestring(); return s.charat(0); Lectura de un Entero public int dameentero() throws IOException { String s=leestring(); return Integer.parseInt(s); El método charat() de la clase String devuelve el carácter de la posición dada El método parseint( ) de la clase Integer convierte de String a tipo int Java Entrada y Salida 19 Java Entrada y Salida 20 Lectura de números en coma flotante public int damedouble() throws IOException { String s=leestring(); Double a = Double.valueOf(s); return a.doublevalue(); El envoltorio Float tiene los correspondientes métodos valueof() y floatvalue() Combinación de flujos Los flujos se pueden combinar para obtener la funcionalidad deseada InputStream InputStreamReader BufferedReader Lee Lee y los pasa Utiliza un búfer para a caracteres Unicode mejorar eficiencia de lectura de carateres Programa Flujos de transformación de datos Java Entrada y Salida 21 Java Entrada y Salida 22 Ejemplo - combinación de flujos class Eco { public static void main (String[] args) throws IOException { BufferedReader entradaestandar = new BufferedReader (new InputStreamReader(System.in)); String mensaje; System.out.println( Introducir una linea de de texto:") mensaje = entradaestandar.readline(); System.out.println( Introducido:\""+mensaje + "\""); Java Entrada y Salida 23 La clase Teclado -- Javadoc package es.ucm.esi; /** /** * <p><p> La La clase clase <em>teclado</em> permite hacer hacer transparente la la lectura sencilla * de de los los tipos tipos mas mas comunes de de datos datos desde desde la la entrada estandar*/ public class classteclado { /** /** variable de de clase clase asignada a la la entrada estandar del del sistema */ */ public static BufferedReader entrada = new new BufferedReader(new InputStreamReader(System.in)); /** /** lee lee una una cadena desde desde la la entrada estandar * @return cadena de de tipo tipo String * @exception excepciones No No lanza lanza ningun tipo tipo de de excepcion de de estrada/salida */ */ public static String leerstring() { String cadena=""; try try { cadena = new new String(entrada.readLine()); catch (IOException e) e) { System.out.println("Error de de E/S"); return cadena; Java // la clase Entrada y Salida // la clase Teclado continua 24 4

La clase Teclado // // continuación de de la la clase clase teclado /** /** lee lee un un numero entero desde desde la la entrada estandar * @return numero entero de de tipo tipo int int * @exception excepciones No No lanza lanza ningun tipo tipo de de excepcion de de estrada/salida */ */ public static int int leerint() { int int entero = 0; 0; boolean error error = false; do do { try try { error error = false; entero = Integer.valueOf(entrada.readLine()).intValue(); catch (NumberFormatException e1) e1) { error error = true; true; System.out.println("Error en en el el formato del del numero, intentelo de de nuevo."); catch (IOException e) e) { System.out.println("Error de de E/S"); while while (error); return entero; // final de Java la clase Entrada y Salida 25 // final de la clase Teclado Ficheros de texto BufferedReader FileReader FileInputStream text chars File chars text BufferedWriter FileWriter FileOutputStream Java Entrada y Salida 26 Ficheros de texto Ejemplo FileReader public class BufferedConsole { Util para leer ficheros de texto public static void main(java.lang.string[] args) Constructor: FileReader(String nombrefichero) throws java.io.ioexception { FileWriter BufferedReader br = new BufferedReader( Util para escribir ficheros de texto new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter( Constructores new OutputStreamWriter(System.out)); FileWriter(String nombrefichero) -- reescribe System.out.println( Dame unos caracteres o EXIT"); FileWriter(String nombrefichero, boolean añadirfinal) -- String s = br.readline(); añade while (!s.equals("exit")) { PrintWriter bw.write("s: " + s); Implementa un flujo de salida de caracteres bw.newline(); Métodos de utilidad s = br.readline(); print(), println(), Java close() Entrada y Salida 27 bw.close(); Java br.close(); Entrada y Salida 28 Ejemplo Ficheros de texto public class FicheroTexto { public static void main(string args[]) { try { // // escritura de de datos PrintWriter salida = new PrintWriter( new BufferedWriter( new FileWriter("prueba.txt"))); salida.println("en un un lugar de de la la mancha de de cuyo"); salida.println("nombre no no quiero acordarme"); salida.close(); // // lectura de de datos BufferedReader entrada =new BufferedReader(new FileReader("prueba.txt")); String s, s, s2 s2 = new String(); while((s = entrada.readline())!= null) s2 s2 = s2 s2 + s + "\n"; System.out.println("Texto leido:" + "\n" + s2); entrada.close(); catch (java.io.ioexception e) e) { { Java Entrada y Salida 29 Ficheros de texto con datos numéricos public class FicheroTexto { public static void main(string args[]) { int i=5; float f=5.5f; try { // // escritura de de datos PrintWriter salida = new PrintWriter( new BufferedWriter( new FileWriter("hola.txt"))); salida.println("en un un lugar de de la la mancha de de cuyo"); salida.println(i); salida.println("nombre no no quiero acordarme"); salida.println(f); salida.close(); Java Entrada y Salida 30 5

Ficheros de texto con datos numéricos // lectura de datos BufferedReader entrada =new BufferedReader(new FileReader("hola.txt")); String s, s2 = new String(); while((s = entrada.readline())!= null) s2 = s2 + s + "\n"; System.out.println("Texto leido:" + "\n" + s2); entrada.close(); catch (java.io.ioexception e) {System.out.println("excepcion"); Java Entrada y Salida 31 Ficheros Clase File Representa un nombre de ruta a un fichero o a un subdirectorio del disco Constructores File(String ruta) File(String ruta, String nombre) File(File directorio, Stringnombre) Java Entrada y Salida 32 Ficheros Métodos canread() comprueba si el fichero se puede leer canwrite() comprueba siel fichero se puede escribir delete() borra dicho fichero getpath() devuelve la ruta del fichero mkdir() crea un directorio con la ruta del objeto que lo recibe isdirectory() comprueba si dicho fichero es un directorio Constructores de otras clases FileReader(File fichero), FileWriter(File fichero) Java Entrada y Salida 33 Ejemplo - copia de ficheros public class CopiaFicheros { public static void main(string[] args) throws IOException { File ficheroentrada = new File("original.txt"); File ficherosalida = new File("copia.txt"); FileReader entrada = new FileReader(ficheroEntrada); FileWriter salida = new FileWriter(ficheroSalida); int dato; while ((dato = entrada.read())!=!= -1) salida.write(dato); entrada.close(); salida.close(); Java Entrada y Salida 34 Serialización Escritura de objeto a fichero Serializable implements Sample Object Object Output Stream Instance writeobject() Object Input Stream Instance readobject() Java Entrada y Salida 35 class Main{ public static void main(string[] args){ try {SampleObject originalobj1 = new SampleObject(); SampleObject originalobj2 = new SampleObject(); originalobj1.setname("mary Popins"); originalobj1.setage(32); originalobj2.setname( Popeye"); originalobj2.setage(42); FileOutputStream fos = null; ObjectOutputStream oos = null; fos = new FileOutputStream("SerializedObj.obj") oos = new ObjectOutputStream(fos); oos.writeobject(originalobj1); oos.writeobject(originalobj2); oos.flush(); oos.close(); catch(exception e){system.out.println("main: main(): " + Java Entrada y Salida 36 6

Lectura de fichero a objeto class Main{ public static void main(string[] args){ try { FileInputStream fis = null; ObjectInputStream ois = null; fis = new FileInputStream("SerializedObj.obj"); ois = new ObjectInputStream(fis); SampleObject newobj1 = (SampleObject) ois.readobject(); SampleObject newobj2 = (SampleObject) ois.readobject(); ois.close(); System.out.println("SampleObject1 name: " + newobj1.getname()); System.out.println("SampleObject2 name: " + newobj2.getname()); catch(exception e){ System.out.println("Main: main(): " + e); Java Entrada y Salida 37 7