- Obtener enlace
- X
- Correo electrónico
- Otras aplicaciones
- Obtener enlace
- X
- Correo electrónico
- Otras aplicaciones
Entradas y salidas (E/S en español, I/O en inglés, para abreviar) son fundamentales para cualquier sistema operativo o lenguaje de programación. Sólo los teoristas encuentran interesante escribir programas que no requieran entrada o produzcan salida. Al mismo tiempo, I/O – E/S (Lo llamaré I/O de ahora en adelante) difícilmente califica como uno de los temas más emocionantes en la ciencia de la computación. Es algo en el fondo, algo que usas cada día—pero para muchos desarrolladores, no es un tema con mucho “sex appeal”.Elliote Rusty Harold.
Me gustaría
extenderme sobre todo lo relacionado con I/O, comenzar desde InputStream y
OutputStream (lo cubriré en otro tema), pero, ¿quién usa un FileInputStream cuando se tiene un
FileReader (ver ejemplo de uso), o igual quién usa un FileOutputStream cuando se tiene un FileWriter (ver ejemplo de uso)?,
por lo tanto, lo que voy a hacer es saltarme las “partes aburridas” (InputStream
y OutputStream que nadie usa) y pasar a las excepciones, la consola, etc. Aquí
les va:
Excepciones al utilizar I/O
Todos sabemos que
al escribir código en Java tenemos que tratar muchas veces con las excepciones,
ya sea que dividamos entre 0 (Lanza una excepción del tipo ArithmeticException), que tratemos de llamar a una posición en un
arreglo que es mayor a su tamaño (ArrayIndexOutOfBoundsException),
etc, etc. En este tema de las entradas y salidas, esto no cambia, cada que
realizamos alguna operación que tome entrada o dé salida, tendrás que tratar
una excepción del tipo IOException y
puedes hacer esto de dos formas:
- Que declares throws IOException en el método donde realizas entradas o salidas.
- Que encierres la operación en un bloque try/catch.
La primera opción
es mejor si quieres que quién llame el método tenga más control sobre qué hacer
si algo sale mal (que se genere la excepción), la segunda es mejor si quieres
que el bloque try/catch se haga cargo
de todo, por ejemplo, que muestre un mensaje de error con un dialogo y que llame
al método printStackTrace (seguimiento
de la pila), es importante saber que no hay ninguna diferencia entre tratar una
excepción de este tipo que en la que se trataría cualquier otra excepción.
Tratando con la consola
Primero que nada
daré una pequeña definición de la consola: Llamamos consola (incorrectamente
por cierto, pero la llamaré así por costumbre y comodidad del lector) a ese
lugar donde normalmente vemos los mensajes que ponemos ya sea en System.out.print (o println), System.err.print (o
println también) o de donde normalmente
obtenemos la entrada de System.in. La
veremos en distintas formas dependiendo del entorno de desarrollo o sistema
operativo que usemos, por ejemplo si estás utilizando Eclipse, verás la consola
en una pestaña normalmente en la parte inferior de la ventana de tu IDE (Integrated
Development Environment, Entorno de Desarrollo Integrado en español), si usas Windows como sistema operativo, puede
que veas la consola en una ventana de línea de comandos, igual es para Mac y
Unix.
¿La consola como GUI?
La mayoría de
nosotros (Incluido yo) utilizamos la consola al inicio de nuestro aprendizaje del
lenguaje para ver lo que hacía nuestro código o simplemente comprobar al final
que hacíamos bien las cosas, yo en lo personal aún la uso cuando no sé si mi
error está en la interfaz (GUI) o en otra parte del código, también para probar
código para el cual aún no tengo una GUI, para mí es un método muy útil para
diagnosticar cual método o instrucción falla, pero algo muy importante que
debemos recordar, es que ¡La consola no
es una buena GUI! En estos tiempos, yo no veo casi ninguna razón (por no
decir que ya no la hay en lo absoluto) para pensar en utilizar la consola como
interfaz de usuario, por mínima que sea la interfaz, una cosa es usar la
consola en tiempo de desarrollo para tratar de darte cuenta donde te
equivocaste, y otra muy distinta es que tus programas ya dirigidos al usuario la
utilicen. Algunos quizá piensen ¿No se debe usar la consola solo por cuestión
de estética? Pues no es así, la consola, además de ser una interfaz de usuario
muy fea y poco versátil, tiene aún más desventajas, por ejemplo:
- Puede confundir al usuario (incluso hacerle pensar que el programa no funciona bien).
- No puedes mostrar botones, combos, cajas de texto, etc.
- No es nada fácil de usar para el usuario final.
- En sistemas operativos como Mac y en algunos navegadores, la consola no admite entradas (System.in), sólo salidas (System.out y System.err).
Conociendo System.out
a fondo
La mayoría
llegamos a utilizar System.out
incluso antes de saber lo que es una clase o un OutputStream. Específicamente, System.out es el campo estático de la
clase java.lang.System. Es una
instancia de java.io.PrintStream, que
es una subclase de java.io.OutputStream.
Conociendo System.err
a fondo
System.err es la versión de Java de stderr. Como System.out, System.err es una instancia de java.io.Printstream, una subclase de java.io.OutputStream. System.err es comúnmente más usado
dentro de la clausula catch de un
bloque try/catch así:
Los programadores
de Unix y C reconocen stderr, que es comúnmente
usado para mensajes de error. stderr es
un puntero de archivo separado de stdout,
pero muchas veces significa lo mismo. Generalmente tanto stderr como stdout envían
datos a la consola, cualesquiera que estos sean. De todas formas, stdout y stderr pueden ser redireccionados a diferentes lugares. Por
ejemplo, la salida puede ser redireccionada a un archivo mientras los mensajes
de error aún aparecen en la consola.
Conociendo System.in a fondo
Bien, eso es todo por hoy, no olviden que pueden
suscribirse a mis entradas por medio de su correo (en la parte superior derecha),
RSS o Atom (en la parte inferior derecha), y pues ya saben, dudas, comentarios,
criticas (constructivas) o peticiones son bien recibidas en la parte de abajo,
saludos :D.
Entradas Relacionadas:
Escribir un archivo de texto en Java
Leer un archivo de texto en Java
Sytem.in es el flujo de entrada conectado a la consola, tanto como System.out es el flujo de salida
conectado a la consola. En términos Unix o C, System.in es el campo estático de la clase java.lang.System. Es una instancia de java.io.InputStream, al menos hasta donde está documentado.
Pasado lo que
está documentado, System.in es en
realidad un java.io.BufferedInputStream.
BufferedInputStream no declara
métodos nuevos, solo reescribe los que ya están declarados en java.io.InputStream. BufferedInputStream lee los datos en grandes
pedazos en dentro de un búfer, entonces reparte los datos en los tamaños
pedidos. Esto puede ser más eficiente que leer un carácter a la vez. De tal manera
que, es completamente transparente para el programador.
La razón
principal de esto es que cada byte no se presentado para ser leído mientras el
usuario lo escribe en System.in. En
su lugar, la entrada entra en el programa de una línea a la vez. Esto permite
al usuario escribir en la consola la tecla de retroceso para corregir errores.
Java no te permite poner la consola en un “modo sin procesar”, donde cada carácter
se vuelve disponible tan pronto como es escrito, incluyendo caracteres como backspace (retroceso) y delete (borrar).
Entradas Relacionadas:
Escribir un archivo de texto en Java
Leer un archivo de texto en Java
Consola
Consola Java
E/S
eclipse ide
Entradas y Salidas
I/O
I/O E/S
java
Java IO
java poo
poo
Principiantes java
Programación
- Obtener enlace
- X
- Correo electrónico
- Otras aplicaciones
Comentarios
Casinos Near Hollywood Casino & Racetrack - Mapyro
ResponderEliminarDiscover 오산 출장마사지 the casinos and other gaming 전라남도 출장샵 places 군포 출장샵 to stay closest to Hollywood 밀양 출장안마 Casino & Racetrack in 제천 출장마사지 Hollywood, IL. Mapyro users can make the most of