{"id":2039,"date":"2023-11-29T08:57:04","date_gmt":"2023-11-29T11:57:04","guid":{"rendered":"https:\/\/stackcodelab.com\/blog\/?p=2039"},"modified":"2023-11-29T08:57:05","modified_gmt":"2023-11-29T11:57:05","slug":"capitulo-4-tratamiento-de-excepciones-manejo-de-archivos-y-flujos","status":"publish","type":"post","link":"https:\/\/stackcodelab.com\/blog\/capitulo-4-tratamiento-de-excepciones-manejo-de-archivos-y-flujos\/","title":{"rendered":"Cap\u00edtulo 4: Tratamiento de Excepciones, Manejo de Archivos y Flujos"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Este cap\u00edtulo se centrar\u00e1 en dos aspectos importantes de la programaci\u00f3n en Java: el tratamiento de excepciones y el manejo de archivos y flujos. Estos conceptos son fundamentales para escribir programas robustos y capaces de interactuar con archivos y flujos de datos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a>4.1. Tratamiento de Excepciones<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Las excepciones son eventos inesperados que pueden ocurrir durante la ejecuci\u00f3n de un programa. Java proporciona un sistema de manejo de excepciones para detectar, informar y manejar excepciones de manera controlada.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejemplo 4.1.1: Tratamiento de Excepciones<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class DivisionPorCero {\r\n    public static void main(String&#91;] args) {\r\n        int numerador = 5;\r\n        int denominador = 0;\r\n        try {\r\n            int resultado = numerador \/ denominador;\r\n            System.out.println(\"Resultado: \" + resultado);\r\n        } catch (ArithmeticException e) {\r\n            System.out.println(\"Error: Divisi\u00f3n por cero.\");\r\n        }\r\n    }\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejercicio 4.1.1: Tratamiento de Excepciones<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Crea un programa que solicite al usuario dos n\u00fameros y realice una divisi\u00f3n. Implementa el manejo de excepciones para evitar la divisi\u00f3n por cero.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a>4.2. Manejo de Archivos y Flujos<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El manejo de archivos es fundamental para leer y escribir datos en archivos. Java proporciona clases y flujos para realizar estas operaciones de manera efectiva.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejemplo 4.2.1: Lectura y Escritura en Archivos<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import java.io.*;\r\n\r\npublic class ManejoArchivos {\r\n    public static void main(String&#91;] args) {\r\n        try {\r\n            \/\/ Escritura en archivo\r\n            FileWriter escritor = new FileWriter(\"archivo.txt\");\r\n            escritor.write(\"Hola, mundo\");\r\n            escritor.close();\r\n            \r\n            \/\/ Lectura desde archivo\r\n            FileReader lector = new FileReader(\"archivo.txt\");\r\n            int caracter;\r\n            while ((caracter = lector.read()) != -1) {\r\n                System.out.print((char) caracter);\r\n            }\r\n            lector.close();\r\n        } catch (IOException e) {\r\n            e.printStackTrace();\r\n        }\r\n    }\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejercicio 4.2.1: Manejo de Archivos y Flujos<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Crea un programa que escriba una lista de nombres en un archivo de texto y luego lea y muestre esos nombres en la consola.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a>4.3. Serializaci\u00f3n y Deserializaci\u00f3n de Objetos<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La serializaci\u00f3n se utiliza para convertir objetos en una secuencia de bytes que se pueden almacenar en archivos o transmitir a trav\u00e9s de la red. La deserializaci\u00f3n es el proceso inverso, que convierte la secuencia de bytes en un objeto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejemplo 4.3.1: Serializaci\u00f3n y Deserializaci\u00f3n<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import java.io.*;\r\n\r\nclass Persona implements Serializable {\r\n    private String nombre;\r\n    private int edad;\r\n\r\n    Persona(String nombre, int edad) {\r\n        this.nombre = nombre;\r\n        this.edad = edad;\r\n    }\r\n\r\n    public String toString() {\r\n        return \"Nombre: \" + nombre + \", Edad: \" + edad;\r\n    }\r\n}\r\n\r\npublic class Serializacion {\r\n    public static void main(String&#91;] args) {\r\n        \/\/ Serializaci\u00f3n\r\n        try {\r\n            FileOutputStream archivoSalida = new FileOutputStream(\"persona.ser\");\r\n            ObjectOutputStream objetoSalida = new ObjectOutputStream(archivoSalida);\r\n            Persona persona = new Persona(\"Juan\", 30);\r\n            objetoSalida.writeObject(persona);\r\n            objetoSalida.close();\r\n        } catch (IOException e) {\r\n            e.printStackTrace();\r\n        }\r\n\r\n        \/\/ Deserializaci\u00f3n\r\n        try {\r\n            FileInputStream archivoEntrada = new FileInputStream(\"persona.ser\");\r\n            ObjectInputStream objetoEntrada = new ObjectInputStream(archivoEntrada);\r\n            Persona personaDeserializada = (Persona) objetoEntrada.readObject();\r\n            objetoEntrada.close();\r\n            System.out.println(personaDeserializada);\r\n        } catch (IOException | ClassNotFoundException e) {\r\n            e.printStackTrace();\r\n        }\r\n    }\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejercicio 4.3.1: Serializaci\u00f3n y Deserializaci\u00f3n<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Crea una clase <code>Producto<\/code> que implemente la interfaz&nbsp;<code>Serializable<\/code>&nbsp;y contiene informaci\u00f3n sobre productos como nombre, precio, y cantidad en stock. Realiza la serializaci\u00f3n y deserializaci\u00f3n de un objeto <code>Producto<\/code> en un archivo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Resumen del Cap\u00edtulo y Ejercicios<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Resumen de los conceptos clave de este cap\u00edtulo, incluyendo el tratamiento de excepciones, el manejo de archivos y flujos, y la serializaci\u00f3n de objetos.<\/li>\n\n\n\n<li>Completa los ejercicios proporcionados para practicar y fortalecer tu comprensi\u00f3n de estos conceptos importantes en Java.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Este cap\u00edtulo te ha proporcionado las herramientas necesarias para escribir programas en Java que sean m\u00e1s robustos y capaces de interactuar con archivos y flujos de datos de manera efectiva.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a>Respuesta ejercicio 4.1.1:<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed tienes el c\u00f3digo y los pasos para resolver el ejercicio de crear un programa que solicita al usuario dos n\u00fameros y realiza una divisi\u00f3n, con el manejo de excepciones para evitar la divisi\u00f3n por cero.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 1: Creaci\u00f3n del Programa<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Primero, crea un programa Java que solicite al usuario dos n\u00fameros y realice la divisi\u00f3n. Utiliza un bloque&nbsp;<code>try<\/code>&nbsp;y&nbsp;<code>catch<\/code>&nbsp;para manejar las excepciones.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import java.util.Scanner;\r\n\r\npublic class DivisionConExcepciones {\r\n    public static void main(String&#91;] args) {\r\n        Scanner scanner = new Scanner(System.in);\r\n        \r\n        System.out.print(\"Ingrese el numerador: \");\r\n        int numerador = scanner.nextInt();\r\n        \r\n        System.out.print(\"Ingrese el denominador: \");\r\n        int denominador = scanner.nextInt();\r\n        \r\n        try {\r\n            int resultado = numerador \/ denominador;\r\n            System.out.println(\"Resultado de la divisi\u00f3n: \" + resultado);\r\n        } catch (ArithmeticException e) {\r\n            System.out.println(\"Error: Divisi\u00f3n por cero no permitida.\");\r\n        }\r\n        \r\n        scanner.close();\r\n    }\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 2: Ejecuci\u00f3n del Programa<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Al ejecutar el programa, se le pedir\u00e1 al usuario que ingrese el numerador y el denominador. El programa intentar\u00e1 realizar la divisi\u00f3n y, si el denominador es cero, atrapar\u00e1 la excepci\u00f3n <code>ArithmeticException <\/code>y mostrar\u00e1 un mensaje de error en lugar de lanzar una excepci\u00f3n no manejada.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Resultado Esperado:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Si se ingresa un denominador distinto de cero, el programa mostrar\u00e1 el resultado de la divisi\u00f3n.<\/li>\n\n\n\n<li>Si se ingresa un denominador igual a cero, el programa mostrar\u00e1 un mensaje de error.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Este programa demuestra c\u00f3mo manejar excepciones de divisi\u00f3n por cero de manera controlada para que el programa no se bloquee en caso de error.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a>Respuesta ejercicio 4.2.1:<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Para resolver el ejercicio de crear un programa que escriba una lista de nombres en un archivo de texto y luego lea y muestre esos nombres en la consola, sigue estos pasos:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 1: Creaci\u00f3n del Programa de Escritura<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Primero, crea un programa Java que escriba una lista de nombres en un archivo de texto. Utilizaremos las clases <code>FileWriter <\/code>y <code>BufferedWriter <\/code>para realizar la escritura.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import java.io.BufferedWriter;\r\nimport java.io.FileWriter;\r\nimport java.io.IOException;\r\n\r\npublic class EscrituraArchivos {\r\n    public static void main(String&#91;] args) {\r\n        String&#91;] nombres = {\"Juan\", \"Mar\u00eda\", \"Pedro\", \"Ana\"};\r\n\r\n        try {\r\n            BufferedWriter escritor = new BufferedWriter(new FileWriter(\"nombres.txt\"));\r\n\r\n            for (String nombre : nombres) {\r\n                escritor.write(nombre);\r\n                escritor.newLine();  \/\/ Nueva l\u00ednea para cada nombre\r\n            }\r\n\r\n            escritor.close();\r\n            System.out.println(\"Nombres escritos en el archivo.\");\r\n        } catch (IOException e) {\r\n            e.printStackTrace();\r\n        }\r\n    }\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 2: Creaci\u00f3n del Programa de Lectura<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n, crea un programa separado que lea los nombres del archivo y los muestre en la consola.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import java.io.BufferedReader;\r\nimport java.io.FileReader;\r\nimport java.io.IOException;\r\n\r\npublic class LecturaArchivos {\r\n    public static void main(String&#91;] args) {\r\n        try {\r\n            BufferedReader lector = new BufferedReader(new FileReader(\"nombres.txt\"));\r\n            String linea;\r\n\r\n            while ((linea = lector.readLine()) != null) {\r\n                System.out.println(linea);\r\n            }\r\n\r\n            lector.close();\r\n        } catch (IOException e) {\r\n            e.printStackTrace();\r\n        }\r\n    }\r\n}\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 3: Ejecuci\u00f3n del Programa de Escritura<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ejecuta el programa de escritura para crear el archivo \u00abnombres.txt\u00bb con la lista de nombres.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Paso 4: Ejecuci\u00f3n del Programa de Lectura<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Luego, ejecuta el programa de lectura para abrir y leer el archivo \u00abnombres.txt\u00bb y mostrar los nombres en la consola.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Resultado Esperado:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El programa de lectura mostrar\u00e1 los nombres en la consola, uno por l\u00ednea, obtenidos del archivo de texto creado por el programa de escritura.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este ejercicio demuestra c\u00f3mo escribir y leer datos desde un archivo de texto en Java.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Este cap\u00edtulo se centrar\u00e1 en dos aspectos importantes de la programaci\u00f3n en Java: el tratamiento de excepciones y el manejo de archivos y flujos. Estos conceptos son fundamentales para escribir programas robustos y capaces de interactuar con archivos y flujos de datos. 4.1. Tratamiento de Excepciones Las excepciones son eventos inesperados que pueden ocurrir durante [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2040,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[40],"tags":[42],"class_list":["post-2039","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java-y-otras-hierbas","tag-tratamiento-de-excepciones"],"uagb_featured_image_src":{"full":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Tratamiento-de-Excepciones.jpg",1000,698,false],"thumbnail":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Tratamiento-de-Excepciones-150x150.jpg",150,150,true],"medium":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Tratamiento-de-Excepciones-300x209.jpg",300,209,true],"medium_large":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Tratamiento-de-Excepciones-768x536.jpg",768,536,true],"large":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Tratamiento-de-Excepciones.jpg",1000,698,false],"1536x1536":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Tratamiento-de-Excepciones.jpg",1000,698,false],"2048x2048":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/11\/Tratamiento-de-Excepciones.jpg",1000,698,false]},"uagb_author_info":{"display_name":"arquitecto","author_link":"https:\/\/stackcodelab.com\/blog\/author\/arquitecto\/"},"uagb_comment_info":0,"uagb_excerpt":"Este cap\u00edtulo se centrar\u00e1 en dos aspectos importantes de la programaci\u00f3n en Java: el tratamiento de excepciones y el manejo de archivos y flujos. Estos conceptos son fundamentales para escribir programas robustos y capaces de interactuar con archivos y flujos de datos. 4.1. Tratamiento de Excepciones Las excepciones son eventos inesperados que pueden ocurrir durante&hellip;","_links":{"self":[{"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts\/2039","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/comments?post=2039"}],"version-history":[{"count":1,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts\/2039\/revisions"}],"predecessor-version":[{"id":2041,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts\/2039\/revisions\/2041"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/media\/2040"}],"wp:attachment":[{"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/media?parent=2039"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/categories?post=2039"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/tags?post=2039"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}