Want to create interactive content? It’s easy in Genially!

Get started free

TEMA 5

Marlene Sánchez

Created on July 6, 2023

Start designing with a free template

Discover more than 1500 professional designs like these:

Practical Presentation

Smart Presentation

Essential Presentation

Akihabara Presentation

Pastel Color Presentation

Modern Presentation

Relaxing Presentation

Transcript

PROGRAMACIÓN JAVA

wow

Presentación Básica

BIENVENIDOS

BIENVENIDOS

Soy un subtítulo genial, ideal para dar más contexto sobre el tema que vas a tratar

Dirección Corporativa de Operaciones Unidad de Servicios Técnicos Centro Nacional de Capacitación Sureste "Ing. Manuel Meza Duarte"

¡Vamos!

INiciAR

UNIDAD 5

El PAQUETE JAVA.LANG

introducción

Todo dato tiene un origen de entrada o un destino de salida (convenientemente en inglés: I/O). Un programa trabaja con datos que provienen de una entrada la cual puede ser un teclado, un archivo en disco o un socket a través de la red. Así mismo un programa genera resultados enviándolos a una salida la cual puede ser la pantalla, un archivo en disco o un socket a través de la red. Como podemos comprender hay distintos orígenes de entrada y destinos de salida para los datos, en Java todos estos se consideran flujos (en inglés: streams) de datos para los cuales disponemos, en la API estándar, del paquete java.io especializado en la tarea de poder controlar estos flujos con cierta abstracción sobre el origen de los mismos, gracias a esto siempre podemos recurrir al mismo grupo de clases independientemente del caso a tratar.

FLUJOS DE ENTRADA Y SALIDA

Así que en Java podemos tener un flujo de entrada (en ingles: input stream) por el cual recibimos datos desde el exterior de nuestro programa, o un flujo de salida (en ingles: output stream) el cual envía nuestros datos hacia un cierto destino.

FLUJOS DE ENTRADA Y SALIDA

Existen dos tipos de flujos según el tipo de dato: Flujos binarios – byte (8-bit): Es el tipo de flujo mas primitivo y portable, de echo cualquier otro tipo de flujo esta construido sobre este porque hablando a bajo nivel todas las operaciones de I/O son flujos de bytes. Nos permitirá trabajar adecuadamente con datos binarios tales como archivos de imagen, sonido, etc. Las clases principales para manejar estos flujos son las clases abstractas InputStream y OutputStream de las cuales heredan otras sub-clases que implementan en formas mas concretas la misma tarea.

FLUJOS DE ENTRADA Y SALIDA

Flujos de caracteres – char (16-bit): Es un tipo de flujo de caracteres en codificación Unicode, listo para la internacionalización, ideal para trabajar con texto plano. Las clases principales para manejar estos flujos son las clases abstractas Reader y Writer de las cuales heredan otras sub-clases que implementan en formas mas concretas la misma tarea. Cualquiera de estas clases realiza la conversión correspondiente de byte a char para leer o de char a byte para escribir.

Esquema inputstream y outputstream

AudioInputStream
ByteArrayInputStream
File InputStream
Piped InputStream
Filter InputStream
Secuence InputStream
StringBuffer InputStream
Object InputStream
InputStream
OutputStream
ByteArray OutputStream
File OutputStream
Filter OutputStream
Piped OutputStream
Object OutputStream

Esquema Reader, Writer,

Reader
Buffered Reader
CharArray Reader
InputStream Reader
Filter Reader
Piped Reader
String Reader
Writer
Buffered Writer
CharArray Writer
OutputStream Writer
Filter Writer
Piped Writer
String Writer
Print Writer

Lectura y escritura

En el proceso de lectura o escritura de datos tenemos siempre tres pasos:

Abrir un flujo de datos, eligiendo el mas adecuado a la ocasión

Leer o escribir datos mientras todavía queden

Cerrar el flujo de datos, liberando el recurso

Lectura

La clase InputStream:

  • int read(): Lee el próximo byte del flujo representado en un entero. Devuelve -1 si no quedan mas datos que leer.
  • int read(byte[] b) : Lee un arreglo de bytes del flujo.
  • int read(byte[] b, int off, int len): Lee un arreglo de bytes del flujo, desde y hasta la posición indicada.

escritura

La clase OutputStream:

  • void write(int b) : Escribe un solo byte en el flujo.
  • void write(byte[] b) : Escribe un arreglo de bytes en el flujo.
  • void write(byte[] b, int off, int len) : Escribe una porción de un arreglo de bytes en el flujo.

Escritura Clase writer

La clase OutputStream:

  • void write(int c): Escribe un solo carácter en el flujo.
  • void write(char[] cbuf): Escribe un arreglo de caracteres en el flujo.
  • void write(char[] cbuf, int off, int len): Escribe una porción de un arreglo de caracteres en el flujo.

ENTRADA Y SALIDA ESTÁNDAR

La clase System, en el paquete java.lang de la API estándar, posee referencias estáticas hacia tres objetos que representan flujos de datos ya abiertos y preparados para poder usarse. Estos flujos son:

  • InputStream in (InputStream): Flujo de entrada estándar. Típicamente corresponde al teclado.
  • PrintStream out (OutputStream): Flujo de salida estándar. Típicamente corresponde a la pantalla.
  • PrintStream err (OutputStream): Flujo de salida estándar de errores. Típicamente corresponde a la pantalla.
Cualquiera de estos flujos pueden ser redirigidos hacia otras fuentes o destinos.

java.io.IOException

Es un tipo de excepción generalizada que es lanzada cuando algún tipo de operación I/O ah fallado. Esta excepción debe de ser tratada ya sea manejándola con un bloque de código try-catch en el mismo momento que se realice la operación o dejando que se propague hacia arriba en la pila de llamadas utilizando throws IOException.

METODOS INPUTSTREAM

METODOS INPUTSTREAM

METODOS INPUTSTREAM

LECTURA DE ENTRADA DE CONSOLA

Aquí hay un programa que demuestra la lectura de una matriz de bytes de System.in. Tenga en cuenta que cualquier excepción de E/S que pueda generarse simplemente se descarta de main(). Este enfoque es común cuando lee desde la consola, pero puede manejar estos tipos de errores usted mismo, si lo desea.

ESCRITURA DE SALIDA DE CONSOLA

Como en el caso de la entrada de la consola, Java originalmente solo proporcionaba streams de bytes para la salida de la consola. Java 1.1 agregó streams de caracteres. Para el código más portátil, se recomiendan streams de caracteres. Sin embargo, debido a que System.out es un stream de bytes, la salida de consola basada en bytes sigue siendo ampliamente utilizada. La salida de la consola se logra más fácilmente con print() y println(). Estos métodos están definidos por la clase PrintStream (que es el tipo de objeto al que hace referencia System.out). Aunque System.out es un stream de bytes, todavía es aceptable usar este stream para una salida de consola simple. Como PrintStream es un stream de salida derivada de OutputStream, también implementa el método de bajo nivel write(). Por lo tanto, es posible escribir en la consola utilizando write().

LECTURA Y ESCRITURA DE ARCHIVOS USANDO STREAMS DE BYTES

Java proporciona una cantidad de clases y métodos que le permiten leer y escribir archivos. Por supuesto, los tipos más comunes de archivos son archivos de disco. En Java, todos los archivos están orientados por bytes, y Java proporciona métodos para leer y escribir bytes desde y hacia un archivo. Por lo tanto, leer y escribir archivos usando flujos de bytes es muy común. Sin embargo, Java le permite envolver un stream de archivos orientada a bytes dentro de un objeto basado en caracteres (se muestra más adelante). Para crear una stream de bytes vinculada a un archivo, use FileInputStream o FileOutputStream. Para abrir un archivo, simplemente cree un objeto de una de estas clases, especificando el nombre del archivo como un argumento para el constructor. Una vez que el archivo está abierto, puede leer o escribir en él.

LECTURA DE ARCHIVOS EN JAVA

Un archivo se abre para la entrada creando un objeto FileInputStream. Aquí hay un constructor de uso común: FileInputStream(String nombreArchivo) throws FileNotFoundException Aquí, nombreArchivo especifica el nombre del archivo que desea abrir. Si el archivo no existe, se lanza FileNotFoundException. FileNotFoundException es una subclase de IOException Para leer desde un archivo, puede usar read(). int read() throws IOException Al cerrar un archivo, se liberan los recursos del sistema asignados al archivo, lo que les permite ser utilizados por otro archivo. Si no se cierra un archivo, se pueden producir “pérdidas de memoria” debido a la asignación de recursos no utilizados.

LECTURA DE ARCHIVOS EN JAVA

El siguiente programa usa read() para ingresar y mostrar el contenido de un archivo de texto, cuyo nombre se especifica como un argumento de línea de comandos. Observe cómo los bloques try/catch manejan los errores de E/S que pueden ocurrir.

LECTURA DE ESCRITURA DE ARCHIVOS EN JAVA EN JAVA

Para abrir un archivo para salida, cree un objeto FileOutputStream. Aquí hay dos constructores de uso común: FileOutputStream(String nombreArchivo) throws FileNotFoundException FileOutputStream(String nombreArchivo, boolean adjuntar) throws FileNotFoundException Si el archivo no puede ser creado, entonces se lanza FileNotFoundException.

  • En la primera forma, cuando se abre un archivo de salida, se destruye cualquier archivo preexistente con el mismo nombre.
  • En la segunda forma, si adjuntar es true, la salida se agrega al final del archivo. De lo contrario, el archivo se sobrescribe.

ESCRITURA DE ARCHIVOS EN JAVA

Para escribir en un archivo, usará el método write(). Su forma más simple se muestra aquí: void write(int valbyte) throws IOException Este método escribe el byte especificado por valbyte para el archivo. Aunque valbyte se declara como un entero, solo los 8 bits de orden inferior se escriben en el archivo. Si se produce un error durante la escritura, se lanza una IOException. Una vez que haya terminado con un archivo de salida, debe cerrarlo usando close(), que se muestra aquí: void close() throws IOException Al cerrar un archivo, se liberan los recursos del sistema asignados al archivo, lo que les permite ser utilizados por otro archivo. También ayuda a garantizar que cualquier salida que quede en un búfer de salida se escriba realmente en el dispositivo físico.

CERRAR UN ARCHIVO AUTOMÁTICAMENTE

En el ejemplo anterior se hizo una llamada explícita a close() para cerrar un archivo una vez que ya no se necesita. Esta es la forma en que se han cerrado los archivos desde que se creó Java por primera vez. Como resultado, este enfoque está muy extendido en el código existente. Además, este enfoque sigue siendo válido y útil.

CERRAR UN ARCHIVO AUTOMÁTICAMENTE

Sin embargo, a partir de JDK 7, Java ha incluido una función que ofrece otra forma más simplificada de administrar recursos, como flujos/streams de archivos, mediante la automatización del proceso de cierre. Se basa en otra versión de la declaración try llamada try-with-resources, y a veces se denomina administración automática de recursos. La ventaja principal de try con recursos es que previene situaciones en las que un archivo (u otro recurso) no se libera inadvertidamente después de que ya no se necesita. Como se explicó, olvidarse de cerrar un archivo puede ocasionar fugas de memoria y otros problemas. El siguiente código usa try-with-resources para abrir un archivo y cerrarlo automáticamente cuando se deja el bloque try.

LABORATORIO 5

ESCRITURA Y LECTURA DE ARCHIVOS CON JAVA

INSTRUCIONES: Abrir el archivo Laboratorio 5 y seguir las instrucciones. DESCRIPCION: Escribirá programas para manipulación de archivos y su información en Java. REQUISITOS: Tener instalado el JDK de Java y tenerlo correctamente configurado.