Entrada/Salida Estándar

Los usuarios de Unix, y aquellos familiarizados con las líneas de comandos de otros sistemas como DOS, han utilizado un tipo de entrada/salida conocida comúnmente por entrada/salida estándar . El fichero de entrada estándar ( stdin ) es simplemente el teclado. El fichero de salida estándar ( stdout ) es típicamente la pantalla (o la ventana del terminal). El fichero de salida de error estándar ( stderr ) también se dirige normalmente a la pantalla, pero se implementa como otro fichero de forma que se pueda distinguir entre la salida normal y (si es necesario) los mensajes de error.

La clase System

Java tiene acceso a la entrada/salida estándar a través de la clase System . En concreto, los tres ficheros que se implementan son:

Stdin

System.in implementa stdin como una instancia de la clase InputStream . Con System.in , se accede a los métodos read() y skip( ). El método read() permite leer un byte de la entrada. skip( long n ) , salta n bytes de la entrada.

Stdout

System.out implementa stdout como una instancia de la clase PrintStream . Se pueden utilizar los métodos print() y println() con cualquier tipo básico Java como argumento.

Stderr

System.err implementa stderr de la misma forma que stdout. Como con System.out, se tiene acceso a los métodos de PrintStream.

Vamos a ver un pequeño ejemplo de entrada/salida en Java. El código siguiente, miType.java , reproduce, o funciona como la utilidad cat de Unix o type de DOS:

 

    import java.io.*;
class miType {
public static void main( String args[] ) throws IOException {
int c;
int contador = 0;
while( (c = System.in.read() ) != 'n' )
{
contador++;
System.out.print( (char)c );
}
System.out.println();    // Línea en blanco
System.err.println( "Contados "+ contador +" bytes en total." );
}
}

Clases comunes de Entrada/Salida

Además de la entrada por teclado y salida por pantalla, se necesita entrada/salida por fichero, como son:

    FileInputStream
DataInputStream
FileOutputStream
DataOutputStream

También existen otras clases para aplicaciones más específicas, que no vamos a tratar, por ser de un uso muy concreto:

    PipedInputStream
BufferedInputStream
PushBackInputStream
StreamTokenizer
PipedOutputStream
BufferedOutputStream

 

Capítulo anterior:
Propagación de Excepciones

Capítulo siguiente:
Ficheros

Leave A Comment?