mayor parte de las aplicaciones reales de Java no se utilizan programas cuya salida sea basada en
texto por consola, sino que son aplicaciones gráficas que basan su interacción con el usuario en un
conjunto de herramientas gráficas denominado AWT
Flujos
Un flujo está ligado a un dispositivo físico por el sistema de E/S de Java. Todos los flujos se
comportan de igual manera, incluso en el caso de que los dispositivos físicos reales a los que están
ligados sean diferentes
Flujos de bytes y flujos de caracteres
Los flujos de bytes proporcionan un medio conveniente para gestionar
la entrada y salida de bytes.
Las clases de flujos de bytes
Definen mediante dos jerarquías de clases. En el nivel superior hay dos clases abstractas:
InputStream y OutputStream. Cada una de estas clases abstractas tiene varias subclases no
abstractas que gestionan las diferencias entre los diversos dispositivos tales como, archivos de disco
Las clases de flujos de caracteres
Los flujos de caracteres se definen mediante dos jerarquías de clases. En el nivel más alto se
encuentran las clases abstractas, Reader y Writer. Estas clases gestionan el flujo de caracteres
Unicode.
Flujos predefinidos
Como sabemos, todos los programas de Java importan automáticamente el paquete java.lang. Este
paquete define una clase denominada System, que encapsula algunos aspectos del entorno de
ejecución.
Entrada por consola
forma de realizar la entrada por consola era mediante un flujo de bytes, y un código que utilice este
enfoque sigue siendo válido. Hoy en día, utilizar un flujo de bytes para leer una entrada por consola
es todavía técnicamente posible
Lectura de caracteres
Para leer un carácter desde un BufferedReader, se utiliza el método read( ). La versión de read( ) que
utilizaremos es: int read( ) throws IOException Cada vez que se llame a read( ), este método lee un
carácter del flujo de entrada y lo devuelve como un valor entero.
Lectura de cadenas
Para leer una cadena desde el teclado, se usa la versión del método readLine( ) que es miembro de
la clase BufferedReader. Su forma general es la siguiente: String readLine( ) throws IOException
Como se puede ver, este método devuelve un objeto String. El siguiente programa es un ejemplo del
uso de la clase BufferedReader y del método readLine( ); el programa lee e imprime líneas de texto
hasta que se escribe la palabra “stop”
Salida por consola
realiza fácilmente con los métodos print( ) y println( ), descritos anteriormente y que son los más
utilizados en los ejemplos de este libro. Estos métodos están definidos en la clase PrintStream (que
es el tipo de objeto al que hace referencia System. out
Lectura y escritura de archivos
Java proporciona clases y métodos que permiten leer y escribir archivos. En Java, todos los archivos
están orientados a bytes, y Java proporciona métodos que permiten leer y escribir datos en un
archivo.