Componentes clave
Clases Métodos
java.io.File boolean canRead( ) boolean canWrite( ) boolean exists( ) boolean isDirectory( ) boolean isFile( ) boolean isHidden( ) long lastModified( ) long length( )
Las soluciones anteriores ilustran técnicas usadas para leer y escribir archivos. Sin embargo, hay otro aspecto del manejo de archivos que no se relaciona con la manipulación del contenido de un archivo, sino que trata con sus atributos, como su longitud, la hora en que fue modifi cado por última vez, si es de sólo lectura, etc. Los atributos de archivo pueden ser muy útiles cuando se administran archivos. Por ejemplo, tal vez quiera confi rmar que un archivo no es de sólo lectura antes de tratar de escribir en él. O tal vez quiera saber la longitud de un archivo antes de copiarlo, de modo que confi rme que cabe en el dispositivo de destino.
Para obtener y establecer los atributos asociados con un archivo, usará la clase File. En esta solución se describe el procedimiento empleado para obtener atributos de archivo. En la siguiente solución se muestra cómo pueden establecer varios de ellos.
Paso a paso
Para obtener los atributos asociados con un archivo se requieren estos pasos: 1. Cree un objeto de File que represente el archivo.
2. Si es necesario, confirme que el archivo existe al llamar a exists( ) con la instancia File. 3. Obtenga el atributo o los atributos en que está interesado al llamar a uno o más métodos de
File.
Análisis
File defi ne cuatro constructores. Aquí se muestra el que usaremos: File(String nombre)
El nombre del archivo se especifi ca con nombre, que puede incluir un nombre de ruta completo. Tenga en cuenta dos temas importantes. En primer lugar, la creación de un objeto de File no hace que un archivo se abra, ni implica que un archivo con ese nombre realmente exista. En cambio, crea un objeto que representa un nombre de ruta. En segundo lugar, nombre también puede
especifi car un directorio. En cuanto a File, un directorio es simplemente un tipo especial de archivo. Para el caso de análisis, en las siguientes descripciones se usa el término "archivo" para aludir a ambos casos, a menos que se indique otra cosa.
A menudo querrá confirmar que el archivo representado por un objeto de File realmente exista antes de tratar de obtener información acerca de él. Para ello, use el método exists( ), que se muestra aquí:
boolean exists( )
devuelve verdadero si existe el archivo, y falso, si no.
Para obtener los atributos de un archivo, usará uno o más de los métodos siguientes:
boolean canRead( ) Devuelve verdadero si el archivo existe y puede leerse. boolean canWrite( ) Devuelve verdadero si el archivo existe y puede escribirse. boolean isDirectory( ) Devuelve verdadero si el archivo existe y es un directorio.
boolean isFile( ) Devuelve verdadero si el archivo existe y es un archivo, en lugar de un directorio o algún otro objeto soportado por el sistema de archivos.
boolean isHidden( ) Devuelve verdadero si el archivo está oculto.
long lastModified( ) Devuelve la fecha y hora en que el archivo se modificó por última vez en milisegundos, a partir del 1 de enero de 1970. Este valor puede usarse para construir un objeto de Fecha, por ejemplo, se devuelve 0 si el archivo no existe. long length( ) Devuelve el tamaño del archivo, o cero si el archivo no existe.
Ejemplo
El siguiente ejemplo crea un método llamado mostrarAtribs( ), que despliega los atributos asociados con un archivo. Para usar el programa, especifi que el archivo en la línea de comandos. // Despliega los atributos asociados con un archivo.
//
// en la línea de comandos. Por ejemplo, para desplegar los // atributos del archivo prueba.pba, use esta línea de comandos: //
// java MostrarAtributosArchivo prueba.pba //
import java.io.*; import java.util.*;
class MostrarAtributosArchivo {
// Despliega los atributos de un archivo.
public static void mostrarAtribs(String nombre) { File f;
// Crea un objeto de archivo para el archivo. f = new File(nombre);
// Primero, confirma que el archivo exista. if(!f.exists( )) {
System.out.println("No se ha encontrado el archivo."); return;
}
// Despliega varios atributos de archivo. System.out.println("Atributos de archivo: ");
if(f.canRead( )) System.out.println(" De lectura"); if(f.canWrite( )) System.out.println(" De escritura");
if(f.isDirectory( )) System.out.println(" Es un directorio"); if(f.isFile( )) System.out.println(" Es un archivo");
if(f.isHidden( )) System.out.println(" Se encuentra oculto"); System.out.println(" Modificado por \u00a3ltima vez el " + new Date(f.lastModified( )));
System.out.println(" Longitud: " + f.length( )); }
// Demuestra el método showAttributes( ). public static void main(String args[ ]) {
// Primero se asegura de que se ha especificado un archivo. if(args.length != 1) {
System.out.println("Uso: MostrarAtributosArchivo nombrearchivo"); return;
}
mostrarAtribs(args[0]); }
Cuando se ejecuta en su propio archivo de origen, MostrarAtributosArchivo produce la siguiente salida: Atributos de archivo: De lectura De escritura Es un archivo
Modificado por última vez el Thu Mar 27 19:25:35 CST 2008 Longitud: 6
Opciones
Si está usando Java 6 o posterior, y si su plataforma lo soporta, puede determinar si su aplicación ejecutará su archivo al llamar canExecute( ), que se muestra aquí:
boolean canExecute( )
Devuelve verdadero si el archivo puede ejecutarse al invocar el programa, y falso si no.
Además del constructor File usado por la solución, File proporciona otros tres. Se muestran a continuación:
File(String dir, String nombre) File(File dir, String nombre) File(URI uri)
En las dos primeras formas, dir especifica un directorio principal y nombre especifica el nombre de un archivo o subdirectorio. En la última forma, uri especifica un objeto URI que describe el archivo.