lunes, 7 de marzo de 2011

la clase File para Directorios en Java (09.05.02)

- El método list() de la clase File muestra los archivos de un directorio. - La interfase FileNameFilter se usa para obtener un subconjunto de archivos

TestFilenameFilter.java
import java.io.*;
public class TestFilenameFilter{

public static void main( String args[] ) {

// Buscar en el raiz del disco C
// Se coloca doble slash puesto que es un caracter de escape.
// en literales cadenas en java se realiza:
// \n -> retorno de carro
// \t -> tabulador
// \\ -> slash
// \" -> comillas
String directorio = "c:\\";

// el directorio es un archivo del sistema operativo
// fileDirectorio es este archivo en el programa
File fileDirectorio = new File(directorio);

// se crea un filtro de archivos que contengan java.
FilenameFilter filtro = new FilterJava("java");

// se aplica el filtro al directorio.
String [] contenido = fileDirectorio.list(filtro);
for (int i=0; i < contenido.length; i++) {
System.out.println(contenido[i]);
}
}
}

FilterJava.java
import java.io.*;
public class FilterJava implements FilenameFilter {

// Esta clase implementa un filtro de archivos
// usando la interface FilenameFilter
// mediante el método accept
String mascara;
FilterJava(String mascara) {
this.mascara = mascara;
}
public boolean accept(File directorio, String nombre) {
return nombre.indexOf(mascara) != -1;
}
}

Ejercicio: Modifique y muestre todos los archivos java del disco duro y su ubicación.

TestFilenameFilterRecursivo.java
import java.io.*;
public class TestFilenameFilterRecursivo{

public static void main( String args[] ) {
String directorio = "c:\\";
filtrarDirectorio(directorio);
}
public static void filtrarDirectorio(String directorio) {

// el directorio es un archivo del sistema operativo
// fileDirectorio es este archivo en el programa
File fileDirectorio = new File(directorio);

// se crea un filtro de archivos que contengan java.
FilenameFilter filtro = new FilterJava("java");

// se aplica el filtro al directorio.
String [] contenido = fileDirectorio.list(filtro);

// en caso no tenga contenido no se procesara
if (contenido==null) return;

// se muestra todos los archivos con java
if ( contenido.length > 0 )
System.out.println(directorio);

for (int i=0; i < contenido.length; i++) {
System.out.println(" "+contenido[i]);
}
// se recorre todo el directorio para
// obtener sus subdirectorios
String [] lista = fileDirectorio.list();

for (int i=0; i < lista.length; i++) {
// se crea un objeto file del subdirectorio
File fileSubDirectorio = new File(fileDirectorio,
lista[i]);
if (fileSubDirectorio.isDirectory()) {
// se llama recursivamente la función
filtrarDirectorio(fileSubDirectorio.
getAbsolutePath());
}
}
}
}

Compartir:

0 comentarios:

Publicar un comentario