Want to create interactive content? It’s easy in Genially!
TEMA 5
Marlene Sánchez
Created on July 6, 2023
Start designing with a free template
Discover more than 1500 professional designs like these:
View
Practical Presentation
View
Smart Presentation
View
Essential Presentation
View
Akihabara Presentation
View
Pastel Color Presentation
View
Modern Presentation
View
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.
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.