![]() ![]() ![]() |
Entrada/salida |
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 .
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 |
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 |