El programa de cuenta de caracteres usapara leer caracteres de su fuente de entrada. La clase System es un miembro del paquete java.lang y permite acceder a funciones del sistema como entrada/salida estandar, copiar matrices, coger la fecha y hora actual y las propiedades.System.in.read()Asimismo, el programa de cuenta de caracteres usa la salida estandar de la clase System para mostrar su salida:
System.out.println(. . .);System.in
es una variable de la clase que referencia a un objeto que implementa el stream de entrada estandar. AnálogamenteSystem.out
es una variable de la clase que es una referencia al objeto que implementa el stream de salida standar. Hay una tercera variableSystem.err
, que implementa el stream de error estandar.Un stream es una secuencia de caracteres. El stream de entrada estandar lee caracteres del teclado, el de salida escribe caracteres en la pantalla y el de error muestra los mensajes de error al usuario.
Leer de la entrada estandar
El métodoSystem.in.read()
lee un caracter y devuelve el caracter leido o bien -1 si no hay m&aas; caracteres por leer.La lectura de la entrada estandar bloquea la ejecución del programa hasta que tiene una indicación de que la entrada esta completa (carácter de fin de entrada).
Escribir en la salida estandar
System.out.println()
muestra su argumento (de tipo String) seguido de un fin de línea.print()
no muestra el fin de línea.Subclases de streams en java.io
En el paquete java.io se definen varias subclases de InputStream:
y de OutputStream:
- FileInputStream: ficheros
- PipedInputStream: tuberías entre procesos o hilos de control.
- FilterInputStream: clase abstracta (procesado de datos)
- DataInputStream: datos dependientes del formato de la máquina
- BufferedInputStream: mayor eficiencia
- PushbackInputStream: con vuelta atrás de un byte
- LineNumberInputStream: con indicación de donde estamos leyendo
- ByteArrayInputStream: matriz de bytes en memoria.
- SequenceInputStream: concatenación de varios strings en uno.
- StringBufferInputStream
El paquete java.io contiene además estas clases:
- FileOutputStream
- PipedOutputStream
- ByteArrayOutputStream
- FilterOutputStream
- DataOutputStream
- BufferedOutputStream
- PrintStream
- File
Representa un objeto en el sistema de ficheros de la máquina. A partir de un objeto de tipo File podemos obtener información acerca del fichero correspondiente de la máquina (por ejemplo su path completo).- FileDescriptor
Representa un descriptor de un fichero o de un socket.- RandomAccessFile
Representa un fichero de acceso aleatorio.- StreamTokenizer
Rompe el contenido de un stream en testigos. La idea es similar a la de StringTokenizer. Un ejemplo de su uso es el análisis (parsing) por ejemplo de HTML.Por último el paquete java.io contiene las interfaces:
- DataInput and DataOutput
Describen streams que pueden leer y escribir en el formato de la máquina. DataInputStream, DataOutputStream, y RandomAccessFile son implementaciones de estas interfaces.- FilenameFilter
El métodolist()
de la clase File usa un FilenameFilter para determinar que ficheros listar en un directorio.