Archivos y directorios

chapter.gif (1105 bytes)home.gif (1054 bytes)next.gif (998 bytes)

Entrada/salida

La clase File

Creación de un filtro


La clase File

disco.gif (1035 bytes)archivo1: Filtro.java, ArchivoApp1.java

Antes de proceder al estudio de las clases que describen la entrada/salida vamos a estudiar la clase File, que nos proporciona información acerca de los archivos, de sus atributos, de los directorios, etc. También explicaremos como se crea un filtro mediante el interface FilenameFilter para obtener la lista de los archivos que tengan por ejemplo, la extensión .java.

La clase File tiene tres constructores

El parámetro path indica el camino hacia el directorio donde se encuentra el archivo, y name indica el nombre del archivo. Los métodos más importantes que describe esta clase son los siguientes:

Mediante un ejemplo explicaremos algunos de los métodos de la clase File.

Creamos un objeto fichero de la clase File, pasándole el nombre del archivo, en este caso, el nombre del archivo código fuente ArchivoApp1.java.

    File fichero=new File("ArchivoApp1.java");

Si este archivo existe, es decir, si la función exists devuelve true, entonces se obtiene información acerca del archivo:

    if(fichero.exists()){
        System.out.println("Nombre del archivo "+fichero.getName());
        System.out.println("Camino             "+fichero.getPath());
        System.out.println("Camino absoluto    "+fichero.getAbsolutePath());
        System.out.println("Se puede escribir  "+fichero.canRead());
        System.out.println("Se puede leer      "+fichero.canWrite());
        System.out.println("Tamaño             "+fichero.length());
   }

La salida del programa es la siguiente:

Nombre del arachivo ArchivoApp1.java
Camino              ArchivoApp1.java
Camino absoluto     c:\JBuilder2\myNumerico\archivo1\ArchivoApp1.java
Se puede escribir   true
Se puede leer       true
Tamaño              1366

Recuérdese que en Windows 95/98 se puede obtener las propiedades de un archivo, seleccionado dicho archivo y eligiendo Propiedades en el menú flotante que aparece al pulsar el botón derecho del ratón .

file1.gif (7042 bytes)

Para obtener la lista de los archivos del directorio actual se crea un nuevo objeto de la clase File

        fichero=new File(".");

Para obtener la lista de los archivos que contiene este directorio se llama a la función miembro list, la cual nos devuelve un array de strings.

        String[] listaArchivos=fichero.list();
        for(int i=0; i<listaArchivos.length; i++){
            System.out.println(listaArchivos[i]);
        }

La salida es la siguiente

archivo1.jpr
archivo1.html
ArchivoApp1.java
ArchivoApp1.~jav
Filtro.java
Filtro.~jav

 

Creación de un filtro

Un filtro es un objeto de una clase que implemente el interface FilenameFilter, y tiene que redefinir la única función del interface denominada accept. Esta función devuelve un dato de tipo boolean. En este caso, la hemos definido de forma que si el nombre del archivo termina con una dterminada extensión devuelve true en caso contrario devuelve false. La función endsWith de la clase String realiza esta tarea tal como se ve en la porción de código que viene a continuación. La extensión se le pasa al constructor de la clase Filtro para inicializar el miembro dato extension.

import java.io.*;

public class Filtro implements FilenameFilter{
    String extension;
    Filtro(String extension){
        this.extension=extension;
    }
    public boolean accept(File dir, String name){
        return name.endsWith(extension);
    }
}

Para obtener la lista de archivos con extensión .java en el directorio actual, creamos un objeto de la clase Filtro y se lo pasamos a la función list miembro de la clase File.

        listaArchivos=fichero.list(new Filtro(".java"));
        for(int i=0; i<listaArchivos.length; i++){
            System.out.println(listaArchivos[i]);
        }

La salida es ahora la siguiente

ArchivoApp1.java
Filtro.java