Entrada/Salida en Java: gestión de datos con streams y Scanner de U-tad

Diapositivas de U-tad sobre Entrada/Salida en Java. El Pdf explora el concepto de Input/Output en Java, centrándose en el uso de streams para la gestión de datos y la clase Scanner para la lectura de ficheros, con ejemplos de código para estudiantes universitarios de Informática.

Ver más

18 páginas

Tema 7. Entrada/Salida en Java
Miguel Ángel Mesas Uzal
2022-2023
Programación Orientada a Objetos
2
En Java, las entradas y salidas se representan mediante streams
(flujos de datos).
Un stream es una conexión entre el programa y la fuente o el destino de
los datos.
La información se transmite en serie por la conexión.
Este concepto permite conceptualizar muchos tipos de
comunicaciones:
Lectura y escritura de archivos.
Red.
Sensores.
Introducción
Entrada/Salida en Java

Visualiza gratis el PDF completo

Regístrate para acceder al documento completo y transformarlo con la IA.

Vista previa

U-Tad Centro Universitario de Tecnología y Arte Digital

Programación Orientada a Objetos: Entrada/Salida en Java

U -Tad CENTRO UNIVERSITARIO DE TECNOLOGÍA Y ARTE DIGITAL Tema 7. Entrada/Salida en Java Programación Orientada a Objetos Miguel Ángel Mesas Uzal 2022-2023U -Tad CENTRO UNIVERSITARIO DE TECNOLOGÍA Y ARTE DIGITAL

Entrada/Salida en Java: Introducción

Entrada/Salida en Java 2 Introducción · En Java, las entradas y salidas se representan mediante streams (flujos de datos). · Un stream es una conexión entre el programa y la fuente o el destino de los datos. · La información se transmite en serie por la conexión. . Este concepto permite conceptualizar muchos tipos de comunicaciones: · Lectura y escritura de archivos. · Red. · Sensores. ▪ …U -Tad CENTRO UNIVERSITARIO DE TECNOLOGÍA Y ARTE DIGITAL

Clases para la Lectura y Escritura en Java

Clases que Manejan Bytes

Entrada/Salida en Java 3 Clases para la lectura y escritura · Están en el paquete java.io . Hay una jerarquía de clases que opera con bytes y otra que opera con caracteres (2 bytes Unicode). Clases que manejan bytes:

  • InputStream
  • FileInputStream
  • PipedInputStream
  • ByteArrayInputStream
  • StringBufferInputStream
  • SequenceInputStream
  • FilterInputStream
  • DataInputStream
  • LineNumberInputStream
  • BufferedInputStream
  • PushbackInputStream
  • ObjectInputStream
  • OutputStream
  • FileOutputStream
  • PipedOutputStream
  • FilterOutputStream
  • DataOutputStream
  • BufferedOutputStream
  • PushbackOutputStream
  • PrintStream
  • ByteArrayOutputStream
  • ObjectOutputStreamU -Tad CENTRO UNIVERSITARIO DE TECNOLOGÍA Y ARTE DIGITAL

Clases que Manejan Caracteres

Entrada/Salida en Java 4 Clases para la lectura y escritura Clases que manejan caracteres (recomendadas):

  • Reader
  • BufferedReader
  • CharArrayReader
  • InputStreamReader
  • FilterReader
  • PipedReader
  • StringReader
  • LineNumberReader
  • FileReader
  • PushbackReader
  • Writer
  • BufferedWriter
  • CharArrayWriter
  • OutputStreamWriter
  • FilterWriter
  • PipedWriter
  • StringWriter
  • PrintWriter
  • FileWriterU -Tad CENTRO UNIVERSITARIO DE TECNOLOGÍA Y ARTE DIGITAL

Combinación de Clases de Origen/Destino y Características

Entrada/Salida en Java 5 Clases para la lectura y escritura · Lo habitual es combinarlas: · Primero una clase de origen o destino . Luego una o varias clases de características. BufferedReader in = new BufferedReader (new FileReader ( "autoexec. bat" ) ) ;U -Tad CENTRO UNIVERSITARIO DE TECNOLOGÍA Y ARTE DIGITAL

Nombres de las Clases de Entrada/Salida

Entrada/Salida en Java 6 Los nombres de las clases

PalabraSignificado
InputStream, OutputStreamLectura/Escritura de bytes
Reader, WriterLectura/Escritura de caracteres
FileArchivos
String, CharArray, ByteArray, StringBufferMemoria (a través del tipo primitivo indicado)
PipedTubo de datos
BufferedBuffer
FilterFiltro
DataIntercambio de datos en formato propio de Java
ObjectPersistencia de objetos
PrintImprimir

Resumen básico: · Obtener un File de trabajo (lectura/escritura) · Utilizar lectura/escritura bajo diferentes clases especializadas7 Entrada/Salida en Java U -Tad CENTRO UNIVERSITARIO DE TECNOLOGÍA Y ARTE DIGITAL

Clases de Origen/Destino en Java I/O

ClasesFunción que realizan
FileReader, File Writer, FileInputStream y FileOutputStreamSon las clases que leen y escriben en archivos de disco. Se explicarán luego con más detalle.
StringReader, String Writer, CharArrayReader, CharArrayWriter, ByteArrayInputStream, Byte ArrayOutputStream, StringBufferInputStreamEstas clases tienen en común que se comunican con la memoria del ordenador. En vez de acceder del modo habitual al contenido de un String, por ejemplo, lo leen como si llegara carácter a carácter. Son útiles cuando se busca un modo general e idéntico de tratar con todos los dispositivos que maneja un programa.
PipedReader, PipedWriter, PipedInputStream, PipedOutputStreamSe utilizan como un "tubo" o conexión bilateral para transmisión de datos. Por ejemplo, en un programa con dos threads pueden permitir la comunicación entre ellos. Un thread tiene el objeto PipedReader y el otro el PipedWriter. Si los streams están conectados, lo que se escriba en el PipedWriter queda disponible para que se lea del PipedReader. Tambien puede comunicar a dos programas distintos.

U -Tad CENTRO UNIVERSITARIO DE TECNOLOGÍA Y ARTE DIGITAL

Clases que Añaden Características a Streams

Entrada/Salida en Java 8 Clases que añaden características

ClasesFunción que realizan
BufferedReader, BufferedWriter, BufferedInputStream, BufferedOutputStreamComo ya se ha dicho, añaden un buffer al manejo de los datos. Es decir, se reducen las operaciones directas sobre el dispositivo (lecturas de disco, comunicaciones por red), para hacer más eficiente su uso. BufferedReader por ejemplo tiene el método readLine() que lee una línea y la devuelve como un String.
InputStreamReader, OutputStreamWriterSon clases puente que permiten convertir streams que utilizan bytes en otros que manejan caracteres. Son la única relación entre ambas jerarquías y no existen clases que realicen la transformación inversa.
ObjectInputStream, ObjectOutputStreamPertenecen al mecanismo de la serialización y se explicarán más adelante.
FilterReader, FilterWriter, FilterInputStream, FilterOutputStreamSon clases base para aplicar diversos filtros o procesos al stream de datos. También se podrían extender para conseguir comportamientos a medida.
DataInputStream, DataOutputStreamSe utilizan para escribir y leer datos directamente en los formatos propios de Java. Los convierten en algo ilegible , pero independiente de plataforma y se usan por tanto para almacenaje o para transmisiones entre ordenadores de distinto funcionamiento.
PrintWriter, PrintStreamTienen métodos adaptados para imprimir las variables de Java con la apariencia normal. A partir de un boolean escriben "true" o "false", colocan la coma de un número decimal, etc.

U -Tad CENTRO UNIVERSITARIO DE TECNOLOGÍA Y ARTE DIGITAL

Entrada y Salida Estándar en Java

Objetos System.in, System.out y System.err

Entrada/Salida en Java 9 Entrada y salida estándar . Teclado y pantalla se manejan a través de la clase System. . Contiene tres objetos static fundamentales: · System.in · System.out · System.err · Métodos de estos objetos:

Métodos de System.inFunción que realizan
int read()Lee un carácter y lo devuelve como int.
Métodos de System.out y System.errFunción que realizan
int print(cualquier tipo)Imprime en pantalla el argumento que se le pase. Puede recibir cualquier tipo primitivo de variable de Java.
int println(cualquier tipo)Como el anterior, pero añadiendo "In' (nueva linea) al final.10 Entrada/Salida en Java U -Tad CENTRO UNIVERSITARIO DE TECNOLOGÍA Y ARTE DIGITAL

Modificación de Dispositivos de Entrada/Salida Estándar

Entrada y salida estándar · Se pueden modificar los dispositivos de la entrada y salida estándar: System. setIn (InputStream is) ; System. setOut (PrintStream ps) ; System. setErr (PrintStream ps) ; Estos métodos pueden tener como argumento cualquier clase derivada de InputStream y OutputStream.U -Tad CENTRO UNIVERSITARIO DE TECNOLOGÍA Y ARTE DIGITAL

La Clase Scanner para Lectura de Teclado

Uso Básico de Scanner

Entrada/Salida en Java 11 La clase Scanner · Es la forma más sencilla de leer el teclado en Java. Scanner sc = new Scanner(System.in); String cadena = sc. nextLine(); int entero = sc. nextInt(); . Tiene constructores que admiten ficheros y secuencias de bytes, no sólo System.in · Se pueden leer números en una base distinta de la decimal: Scanner sc = new Scanner(System.in); / / Lectura de un número en hexadecimal. int entero = sc.nextInt(16);U -Tad CENTRO UNIVERSITARIO DE TECNOLOGÍA Y ARTE DIGITAL

Scanner con Expresiones Regulares

Entrada/Salida en Java 12 La clase Scanner Admite expresiones regulares como patrones de búsqueda. · Si en el siguiente ejemplo introducimos "11:33:44", obtendremos los números 11, 33 y 44. Scanner sc = new Scanner(System.in); / / Usamos como delimitador el dos puntos, o bien cualquier // espacio/fin de línea (el \\s) sc.useDelimiter("[ : \\s]"); / / Leemos los tres enteros int a = sc.nextInt(); int b = sc.nextInt(); int c = sc.nextInt(); // Obtendremos 11-33-44 de salida. System. out.println(a +"-"+ b +"-"+ c);13 Entrada/Salida en Java U -Tad CENTRO UNIVERSITARIO DE TECNOLOGÍA Y ARTE DIGITAL

Tabla de Delimitadores de Scanner

La clase Scanner · Tabla de delimitadores:

abc ...Letras
123 ...Dígitos
\dCualquier dígito
\DCualquier caracter que no sea un dígito
.Cualquier caracter
1.Coma
[abc]Solo a, b, o c
[^abc]Ni a, ni b, ni c
[a-z]Caracteres de a-z
[0-9]Numeros de 0-9
\wCualquier caracter alfanumérico
Cualquier caracter no alfanumérico
{m}m repeticiones
{m,n}m a n repeticiones
*0 a mas repeticiones
?+una o mas repeticiones
Caracter opcional
\sCualquier espacio en blanco
\SCualquier caracter no espacio
^ ... $Comienzo y fin
( ... )Capturar un grupo
(a (bc) )Capturar un subgrupo
(. * )Capturar todo
(ab| cd)Subgrupo"ab" o "cd"U -Tad CENTRO UNIVERSITARIO DE TECNOLOGÍA Y ARTE DIGITAL

Scanner para Lectura de Ficheros

Ejemplo de Lectura de Fichero con Scanner

Entrada/Salida en Java 14 Scanner para lectura de ficheros - Ejemplo de lectura de un fichero usando la clase Scanner: · Fichero: 1 , Pedro , 33 2, Juan, 44 4, Antonio, 55 · Dato importante: Separado por espacio + coma + espacio15 Entrada/Salida en Java U -Tad CENTRO UNIVERSITARIO DE TECNOLOGÍA Y ARTE DIGITAL

Código de Ejemplo FileScanner

Scanner para lectura de ficheros import java. io.File; import java. io.FileNotFoundException; import java.util. Scanner; public class FileScanner { public static void main(String[] args) { //Con un objeto File cargamos el fichero File f = new File("fichero. txt") ; Scanner s; //Es recomendable manejar el error File not Found try { s = new Scanner(f); //Scanner que lee el fichero while (s. hasNextLine()) { //mientras queden lineas hago: String linea = s.nextLine(); //leo siguiente linea Scanner s] = new Scanner(linea); //Scanner para interpretar la linea sl.useDelimiter("\\s*, \\s*"); //Delimitadores espacio+coma+espacio / /Hago tres println porque se que espero tres datos separados por comas System. out.println(sl.next());// System.out.println(sl.next()); System.out.println(sl.next()); s. close(); //Con close cierro el Scanner del archivo } catch (FileNotFoundException e) { //catch que maneja la excepcion si no encuentra el archivo e. printStackTrace () ; }U -Tad CENTRO UNIVERSITARIO DE TECNOLOGÍA Y ARTE DIGITAL

Ejercicios de Entrada/Salida en Java

Ejercicio 1: Contar Líneas y Palabras

Entrada/Salida en Java 16 Ejercicio Ejercicio 1 . Escribir un programa que cuente cuantas líneas y palabras hay en un texto guardado en un fichero de texto.U -Tad CENTRO UNIVERSITARIO DE TECNOLOGÍA Y ARTE DIGITAL

Ejercicio 2: Crear Archivo con Cadenas de Consola

Entrada/Salida en Java 17 Ejercicios Ejercicio 2 . Realizar un programa que cree un archivo Fich.txt que contenga cinco cadenas de caracteres recibidas desde la consola, una en cada línea.

¿Non has encontrado lo que buscabas?

Explora otros temas en la Algor library o crea directamente tus materiales con la IA.