Trabajo

Solo disponible en BuenasTareas
  • Páginas : 107 (26740 palabras )
  • Descarga(s) : 7
  • Publicado : 28 de mayo de 2010
Leer documento completo
Vista previa del texto
12: El sistema de E/S de Java
Crear un buen sistema de entrada/salida (E/S) es una de las tareas más difíciles para el diseñador de un lenguaje. Esto es evidente con sólo observar la cantidad de enfoques diferentes. El reto parece estar en cubrir todas l s posibles eventualidades. No sólo hay distintas a fuentes y consumidores de información de E/S con las que uno desea comunicarse (archivos,la consola, conexiones de red), pero hay que comunicarse con ellos de varias maneras (secuencial, acceso aleatorio, espacio de almacenamiento intermedio, binario, carácter, mediante líneas, mediante palabras, etc.). Los diseñadores de la biblioteca de Java acometieron este problema creando muchas clases. De hecho, hay tantas clases para el sistema de E/S de Java que puede intimidar en un principio(irónicamente, el diseño de la E/S de Java evita una explosión de clases). También hubo un cambio importante en la biblioteca de Java después de la versión 1.0, al suprimir la biblioteca original orientada a bytes por clases de E/S orientadas a char basadas en Unicode. Como resultado hay que aprender un número de clases aceptable antes de entender suficientemente un esbozo de la E/S de Java parapoder usarla adecuadamente. Además, es bastante importante entender la historia de la biblioteca de E/S, incluso si tu primera reacción es: NO me aburras con esta historia, simplemente dime cómo usarla!" El problema es que sin la perspectiva histórica es fácil confundirse con algunas de las clases, y no comprender cuándo debería o no usarse. Este capítulo presentará una introducción a lavariedad de clases de E/S contenidas en la biblioteca estándar de Java, y cómo usarlas.

La clase File
Antes de comenzar a ver las clases que realmente leen y escriben datos en flujos, se echará un vistazo a una utilidad proporcionada por la biblioteca para manejar aspectos relacionados con directorios de archivos. La clase File tiene un nombre engañoso -podría pensarse que hace referencia a unarchivo, pero no es así. Puede representar, o bien el nombre de un archivo particular, o los nombres de un conjunto de archivos de un directorio. Si se trata de un conjunto de archivos, se puede preguntar por el conjunto con el método list( ), que devuelve un array de Strings. Tiene sentido devolver un array en vez

de una de las clases contenedoras flexibles porque el número de elementos es fijo,y si se desea listar un directorio diferente basta con crear un objeto File diferente. De hecho, "FilePath" habría sido un nombre mejor para esta clase. Esta sección muestra un ejemplo de manejo de esta clase, incluyendo la interfaz FilenameFilter asociada.

Un generador de listados de directorio
Suponga que se desea ver el contenido de un directorio. El objeto File puede listarse de dosformas. Si se llama a list( ) sin parámetros, se logrará la lista completa de lo que contiene el objeto File. Sin embargo, si se desea una lista restringida -por ejemplo, si se desean todos los archivos de extensión .java se usará un "filtro de directorio", que es una clase que indica cómo seleccionar los objetos File a mostrar. He aquí el código para el ejemplo. Nótese que el resultado se ha ordenadosin ningún tipo de esfuerzo, de forma alfabética, usando el método java.utils.Array.sort( ) y el ComparadorAlfabetico definido en el Capítulo 11: //: c11:DirList.java // Displays directory listing. import java.io.*; import java.util.*; import com.bruceeckel.util.*; public class DirList { public static void main(String[] args) { File path = new File("."); String[] list; if(args.length == 0) list= path.list(); else list = path.list(new DirFilter(args[0])); Arrays.sort(list, new AlphabeticComparator()); for(int i = 0; i < list.length; i++) System.out.println(list[i]); } } class DirFilter implements FilenameFilter { String afn; DirFilter(String afn) { this.afn = afn; } public boolean accept(File dir, String name) { // Strip path information: String f = new File(name).getName(); return...
tracking img