Bienvenidos sean a este post, como vimos en el post anterior la clase File es utilizada para poder manipular los archivos y los directorios de nuestro sistema operativo, desde crear, listar, eliminar, etc. Hoy nos dedicaremos a ahondar un poco mas en esta clase para conocer tambien sus metodos, comencemos viendo las distintas sobrecargas del constructor de la clase:

  • File(File parent, String child), crea una nueva instancia de File a partir de una ruta de acceso abstracta principal y una ruta de acceso secundaria de tipo String.
  • File (String pathname), crea una nueva instancia de File a partir de una ruta de acceso de tipo String a una ruta de acceso abstracta
  • File(String parent, String child), crea una nueva instancia de File de una ruta de acceso en String y una ruta de acceso secundaria de String
  • File(URI uri), crea una nueva instancia de File convirtiendo el URI del archivo informado en una ruta de acceso abstracta

Despues de haber creado nuestro objeto con algunos de los constructores antes mencionados, podremos utilizar algunos de los siguientes metodos:

  • public String getName(), devuelve el nombre del directorio o archivo informado por medio de la ruta de acceso abstracta
  • public String getParent(), devuelve la ruta de acceso en tipo String de la ruta de acceso abstracta informada, si no existe un directorio principal devuelve null
  • public File getParentFile(), devuelve la ruta de acceso abstracta de la ruta de acceso abstracta principal
  • public String getPath(), devuelve la ruta de acceso abstracta en formato String
  • public boolean isAbsolute(), chequea si la ruta de acceso es absoluta
  • public String getAbsolutePath(), devuelve la ruta de acceso absoluta en formato String
  • public boolean canRead(), chequea si el archivo informado por la ruta de acceso puede ser leido o no.
  • public boolean canWrite(), chequea si el archivo informado por la ruta de acceso puede ser escrito o no
  • public boolean exists(), chequea si el directorio informado existe o no
  • public boolean isDirectory(), chequea si la ruta de acceso abstracta informada es un directorio o no
  • public boolean isFile(), chequea si la ruta de acceso abstracta informada es un archivo o no
  • public long lastModified(), devuelve en tiempo UNIX cuando fue modificado por ultima vez el archivo informado
  • public long length(), devuelve la longitud del archivo informado
  • public boolean createNewFile() throws IOException, crea un nuevo archivo vacio en la ruta de acceso informado pero solo si el mismo no existe
  • public boolean delete(), elimina el archivo o directorio informado, en caso de ser un directorio debe estar vacio
  • public boolean deleteOnExit(), elimina el archivo o directorio cuando la maquina virtual fue terminada
  • public String[] list(), devuelve un array de tipo String con el contendio de la ruta de acceso informada
  • public String[] list(FilenameFilter Filtro), igual al anterior pero solamente si cumplen con el filtro informado
  • public File[] listFiles(), crea un array con el contenido del directorio informado en formato de rutas de acceso abstractas
  • public File[] listFiles(FileFilter Filtro), igual anterior pero solamente si cumplen con el filtro informado
  • public boolean mkdir(), crea el directorio informado en la ruta de acceso
  • public boolean mkdirs(), crea el directorio informado y otros en caso de ser necesario, util para crear direcorios profundos
  • public boolean renameTo(File destino), renombra el archivo al nombre informado
  • public boolean setLastModified(), setea la ultima modificacion en el archivo o directorio informado
  • public boolean setReadOnly(), cambia el archivo o directorio informado para que solo tenga acceso de lectura
  • public static File createTempFile(String prefjo, String sufijo, File directorio) throws IOException, crea un archivo vacio en base al directorio, prefijo y sufijo informado.
  • public static File createTempFile(String prefjo, String sufijo) throws IOException, crea un archivo en el directorio temporal del sistema en base al prefijo y al sufijo informado
  • public int compareTo(File pathname), compara dos rutas de acceso, en caso de ser iguales devuelve el valor cero, devolvera valores dependiendo de cual sea mayor que el otro
  • public boolean equals(Objeto obj), compara si dos objetos son iguales, devuelve verdadero si lo son
  • public String toString(), devuelve la ruta de acceso abstracta en formato String, similar al metodo getPath()

Despues de haber visto estos metodos, pongamos en practica algunos con el siguiente ejemplo:

import java.io.File;

public class FileDemo
{

        public static void main(String[] args)
        {
                File f = null;
                String[] strs = { "entrada.txt","salida.txt" };
                try
                {
                for(String s: strs)
                {
                        f = new File(s);
                        boolean bool = f.canExecute();
                        String a = f.getAbsolutePath();
                        System.out.print(a);
                        System.out.println(" es ejecutable: "+bool);
                }
        }
        catch (Exception e)
        {
                e.printStackTrace();
        }
        }
}

Primero crearemos un objeto de la clase File llamado f, luego crearemos un array de dos archivos, si vienen de ejemplos anteriores deberan tener los dos archivos mencionados en este ejemplo, de lo contrario pueden generarlos o utilizar el nombre de dos archivos en el directorio a mostrar eso queda al criterio de cada uno, despues en el bloque try usaremos un for avanzado donde a nuestro objeto f le asignaremos cada uno de los archivos por vuelta, luego chequeara si es ejecutable (canExecute) y lo almacenara en bool, despues almacenaremos el path absoluto en la variable a, primero mostraremos todo el path completo y luego le adicionaremos el estado, si lo compilamos y ejecutamos obtendran una salida similar a esta:

tinchicus@dbn001vrt:~/programacion/java/program$ java FileDemo
/home/tinchicus/programacion/java/program/entrada.txt es ejecutable: false
/home/tinchicus/programacion/java/program/salida.txt es ejecutable: false
tinchicus@dbn001vrt:~/programacion/java/program$

Como pueden ver nos devolvio la ruta completa donde esta ubicado el archivo y si es ejecutable, para variar el resultado en Linux pueden ejecutar el siguiente comando:

tinchicus@dbn001vrt:~/programacion/java/program$ chmod 777 entrada.txt

Esto modificara los atributos del archivo, los que lo conocen no necesito explicarselos pero a los que no, nos permite setear entre otros atributos el ejecutable en el archivo informado, no ahondare mas en este comando pero con esta opcion lo habilitaran, si vuelven a ejecutar el programa veran esta salida:

tinchicus@dbn001vrt:~/programacion/java/program$ java FileDemo
/home/tinchicus/programacion/java/program/entrada.txt es ejecutable: true
/home/tinchicus/programacion/java/program/salida.txt es ejecutable: false
tinchicus@dbn001vrt:~/programacion/java/program$

Observen como ahora el archivo nos devuelve que es ejecutable, comprobando que nuestro programa realmente funciona.
En resumen, hoy hemos visto algunos metodos disponibles para la clase File, como nos pueden ser utiles para crear, modificar, chequear o mostrar contenidos de nuestro directorio, espero les haya sido util sigueme en Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios