Está en la página 1de 7

16/11/21 3:43 Programación Java: Clase File

BCN-SANTS Anuncios DE
HOSPITALET BURGOS
LLOBREGAT
210.800 € Enviar comentarios ¿Por qué este anuncio?  189.700 €
242.200 € Servihabitat.com

Más información Más información Más información

Más
Crear un blog
Acceder

Programación Java
Buscar
Tutorial Java. Aprende a programar con Java desde cero.

BestPrice.com

Anuncio Obten Cupones Y Descuentos En Miles De Tiendas Online


Anuncio
BestPrice.com

Abrir

Última entrada Teoría Ejercicios Ejercicios POO C++

Clase File
La clase File se usa para obtener
información sobre archivos y directorios.

presencial

teórico y

Además la clase File permite crear y eliminar archivos y directorios.


Un objeto de la clase Java File representa un archivo o
directorio.

práctico
CONSTRUCTORES
La clase proporciona los
siguientes constructores para crear objetos File:

public
File(String nombreFichero|path); un solo día,

entregamos

public File(String path, String


nombreFichero|path);
public File(File path, String
nombreFichero|path);
carnet y

La ruta o path puede ser absoluta o relativa.


diploma, todo

Ejemplos utilizando el primer constructor:


50 euros, valido

1. Crea un Objeto File asociado al


fichero personas.dat que se encuentra en el directorio de trabajo:
File
f = new File("personas.dat");
para5 tipos de...
En este caso no se indica path. Se
supone que el fichero se encuentra en el directorio actual de trabajo. tucarretillero
2. Crea un Objeto File asociado al
fichero personas.dat que se encuentra en el directorio ficheros dentro
del
directorio actual.
File
f = new File("ficheros/personas.dat");
En este caso se indica la ruta
relativa tomando como base el directorio actual de trabajo. Se supone que el
fichero personas.dat se encuentra en el directorio ficheros. A su vez el
directorio ficheros se encuentra
dentro del directorio actual de trabajo.
3. Crea un Objeto File asociado al
fichero personas.dat dando la ruta absoluta:
File
f = new File("c:/ficheros/personas.dat");
El fichero se encuentra en el
directorio ficheros. A su vez el directorio ficheros se encuentra en la raíz de
la
unidad C:
ENTRADAS POPULARES
Si se omite la letra de la unidad,
por defecto se asume la letra de la unidad en la que se encuentra el
proyecto: Java Ejercicios Básicos Resueltos
File
f = new File("/ficheros/personas.dat"); 1
Relación Nº 1: Ejercicios 1, 2 y 3
Ejemplos utilizando el segundo constructor: Empezaremos por unos
ejercicios básicos de programas
En este caso se crea un objeto
File cuya ruta (absoluta o relativa) se indica en el primer String. Java con estructura secuencial,
es decir, en es...
1. Crea un Objeto File asociado al
fichero personas.dat que se encuentra en el directorio ficheros dentro
del
directorio actual. Java Ejercicios Básicos de Arrays
Resueltos 1
File
f = new File("ficheros", "personas.dat" ); Relación Nº 1: Ejercicios 1 y 2 1.
Calcular la media de una serie
En este caso se indica la ruta
relativa tomando como base el directorio actual de trabajo.
de números que se leen por
2. Crea un Objeto File asociado al
fichero personas.dat dando la ruta absoluta: teclado. Programa Java que lea
por teclado ...
File
f = new File("/ficheros", "personas.dat" );

puntocomnoesunlenguaje.blogspot.com/2013/05/clase-file-java.html 1/7
16/11/21 3:43 Programación Java: Clase File
En este caso se indica la ruta
absoluta, indicada por la barra del principio.
BCN-SANTS Anuncios DE
HOSPITALET BURGOS Java Ejercicios Básicos Resueltos
2
Ejemplos utilizando el tercer constructor: LLOBREGAT
210.800 € Enviar comentarios ¿Por qué este anuncio?  189.700 € Java Ejercicios Básicos
Este constructor permite crear un
objeto File cuya ruta se indica a través de otro objeto File.
242.200 € estructura secuencial Actualizado
Servihabitat.com
2020 Relación Nº 2: Ejercicios 4,
1. Crea un Objeto File asociado al
fichero personas.dat que se encuentra en el directorio ficheros dentro 5, 6 y 7 Ejercicio 4: Programa
del
directorio actual. Más información que lea una ca...
Más información Más información
File ruta = new File("ficheros");
Matrices en Java
File f = new File(ruta,
"personas.dat" );
Actualizado 2020
2. Crea un Objeto File asociado al
fichero personas.dat dando la ruta absoluta: Un array en Java
puede tener más
File ruta = new File("/ficheros"); de una dimensión.
File f = new File(ruta,
"personas.dat" ); El caso más
general son los arrays
Debemos tener en cuenta que crear
un objeto File no significa que deba existir el fichero o el directorio o bidimensionales también
que el
path sea correcto. llamados m...

Si no existen no se lanzará ningún


tipo de excepción ni tampoco serán creados. Java Scanner para
lectura de datos
MÉTODOS
Actualizado 2021
Algunos métodos de la clase File son los siguientes: La clase Scanner
está disponible a
MÉTODO DESCRIPCIÓN partir de Java 5 y
facilita la lectura de datos en los
boolean canRead() Devuelve true si se puede
leer el fichero programas Java. Primero vere...
boolean canWrite() Devuelve true si se puede
escribir en el fichero
boolean createNewFile() Crea el fichero asociado al objeto File. Devuelve true
si se ha Java ArrayList.
podido crear. Para poder crearlo el fichero no debe existir. Estructura
dinámica de datos
Lanza
una excepción del tipo IOException.
Actualizado 2020
boolean delete() Elimina el fichero o
directorio. Si es un directorio debe estar DECLARACIÓN Y
vacío. Devuelve true si se ha
podido eliminar. CREACIÓN DE UN
ARRAYLIST ArrayList es una
boolean exists() Devuelve true si el
fichero o directorio existe
clase contenedora genérica que
String getName() Devuelve el nombre del
fichero o directorio implementa arrays dinámicos de
String getAbsolutePath() Devuelve la ruta absoluta
asociada al objeto File. ...
String getCanonicalPath() Devuelve
la ruta única absoluta asociada al objeto File. Puede
haber varias rutas
absolutas asociadas a un File pero solo una
única ruta canónica. Lanza una excepción del tipo
IOException.
String getPath() Devuelve la ruta con la
que se creó el objeto File. Puede ser Programación Java

Enrique García Hernández


relativa o no.
Devuelve
un String conteniendo el directorio padre del File.
String getParent() Devuelve null si no tiene
directorio padre. SEGUIDORES


Seguidores (241)
Siguiente
Devuelve
un objeto File conteniendo el directorio padre del
File getParentFile() File. Devuelve null si no
tiene directorio padre.

boolean isAbsolute() Devuelve true si es una


ruta absoluta
boolean isDirectory() Devuelve true si es un
directorio válido
boolean isFile() Devuelve true si es un
fichero válido
long lastModified() Devuelve un valor en milisegundos que representa la
última
vez que se ha modificado (medido desde las 00:00:00 GMT,
del 1 de
Enero de 1970). Devuelve 0 si el fichero no existe o
ha ocurrido un error.
long length() Devuelve el tamaño en
bytes del fichero. Devuelve 0 si no
existe. Devuelve un valor indeterminado
si es un directorio.
String[] list() Devuelve
un array de String con el nombre de los archivos y Seguir
directorios que contiene
el directorio indicado en el objeto File.
Si no es un directorio devuelve
null. Si el directorio está vacío
TRANSLATE
devuelve un array vacío.
String[]
list(FilenameFilter filtro) Similar
al anterior. Devuelve un array de String con el nombre Seleccionar idioma ​▼
de los archivos y
directorios que contiene el directorio indicado
en el objeto File que cumplen
con el filtro indicado.
boolean mkdir() Crea el directorio.
Devuelve true si se ha podido crear. LENGUAJE C++
boolean mkdirs() Crea
el directorio incluyendo los directorios no existentes
Programacion C++
especificados en la
ruta padre del directorio a crear. Devuelve Fibonacci en C++
true si se ha creado el
directorio y los directorios no existentes
de la ruta padre.
Cambia
el nombre del fichero por el indicado en el parámetro
boolean renameTo(File dest) dest. Devuelve true si
se ha realizado el cambio.

Los puedes consultar todos en la API de Java:


http://docs.oracle.com/javase/8/docs/api/java/io/File.html
EJEMPLOS DE UTILIZACIÓN DE LA CLASE JAVA FILE
Ejemplo 1: El siguiente programa muestra el uso de algunos métodos
de la clase File.
Se crea un objeto File ruta asociado al directorio c:/ficheros y un objeto File f asociado al fichero datos.txt
que se encuentra en ese directorio.
Si el fichero no existe se crea y
si el directorio no existe se crea y a continuación se crea el fichero. Si el
fichero existe se muestra el tamaño del mismo.

import
java.io.File;

puntocomnoesunlenguaje.blogspot.com/2013/05/clase-file-java.html 2/7
16/11/21 3:43 Programación Java: Clase File
import java.io.IOException;
BCN-SANTS Anuncios DE
HOSPITALET BURGOS
public class File2 {210.800 € LLOBREGAT
Enviar comentarios ¿Por qué este anuncio?  189.700 €
242.200 € Servihabitat.com
   
public static void main(String[] args) throws IOException {
        File
ruta = new File("c:/ficheros");
Más información Más información Más información
       
File f = new File(ruta, "datos.txt");
       
System.out.println(f.getAbsolutePath());
       
System.out.println(f.getParent());
       
System.out.println(ruta.getAbsolutePath());
       
System.out.println(ruta.getParent());
        if (!f.exists()) {  //se comprueba si el
fichero existe o no
            System.out.println("Fichero
" + f.getName() + " no existe");
            if (!ruta.exists()) {  //se comprueba si la
ruta existe o no
                System.out.println("El
directorio " + ruta.getName() + " no existe");
                if (ruta.mkdir()) { //se crea la ruta. Si se ha creado correctamente
                   
System.out.println("Directorio creado");
                    if (f.createNewFile())
{  //se crea el
fichero. Si se ha creado correctamente
                       
System.out.println("Fichero " + f.getName() + "
creado");
                    } else {
                        System.out.println("No
se ha podido crear " + f.getName());
                    }
               
} else {
                    System.out.println("No
se ha podido crear " + ruta.getName());
                }
            } else {  //si la ruta existe
creamos el fichero
               
if (f.createNewFile()) {
                   
System.out.println("Fichero " + f.getName() + "
creado");
               
} else {
                    System.out.println("No
se ha podido crear " + f.getName());
                }
            }
        }
else { //el fichero existe. Mostramos el tamaño
            System.out.println("Fichero
" + f.getName() + " existe");
            System.out.println("Tamaño
" + f.length() + " bytes");
        }
    }
}

HUAWEI MateBook14s -

Intel Evo
MateBook 14s - Intel® Evo™ de HUAWEI.

De Regalo HUAWEI Bluetooth Mouse.

¡Compra Ahora!

HUAWEI España Ver más

Si suponemos que no existe el


fichero ni el directorio la ejecución del programa produce la siguiente
salida:
c:\ficheros\datos.txt
c:\ficheros
c:\ficheros
c:\
Fichero
datos.txt no existe
El
directorio ficheros no existe
Directorio
creado
Fichero
datos.txt creado
Si volvemos a ejecutar el programa
después de crear la ruta y el fichero, se muestra:
c:\ficheros\datos.txt
c:\ficheros
c:\ficheros
c:\
Fichero
datos.txt existe
Tamaño
0 bytes
Ejemplo 2: El siguiente programa muestra como eliminar un fichero y
como cambiar el nombre de un
fichero usando la clase File.
import java.io.File;
import java.util.Scanner;
public class File3 {

   
public static void main(String[] args) {
       
Scanner sc = new Scanner(System.in);

puntocomnoesunlenguaje.blogspot.com/2013/05/clase-file-java.html 3/7
16/11/21 3:43 Programación Java: Clase File
        String nombre;
        BCN-SANTS Anuncios DE
HOSPITALET BURGOS
        //Eliminar un210.800 €
fichero LLOBREGAT
Enviar comentarios ¿Por qué este anuncio?  189.700 €
        System.out.println("Introduce el
nombre del fichero a eliminar:
242.200 €"); Servihabitat.com
        nombre =
sc.nextLine();
       
File f = new File(nombre);
Más información Más información Más información
       
if(f.exists()){
           
System.out.println(f.getAbsolutePath());
           
if(f.delete()){
               
System.out.println("Fichero eliminado");
           
}  else{
                System.out.println("No se
ha podido eliminar");
            }
        } 
else{
            System.out.println("El fichero
" + f.getAbsolutePath() + " no existe");
        }

        //Cambiar el nombre


de un fichero
        String nuevoNombre;
        System.out.println("Introduce el
nombre del fichero a renombrar: ");
        nombre = sc.nextLine();
       
File f1 = new File(nombre);
       
if(f1.exists()){
           
System.out.println(f1.getAbsolutePath());
           
System.out.println("Introduce
nuevo nombre: ");
            nuevoNombre
= sc.nextLine();
           
File f2 = new File(nuevoNombre);
           
if(f1.renameTo(f2)){
               
System.out.println("Se
ha cambiado el nombre");
            } 
else{
                System.out.println("No se
ha podido cambiar el nombre");
            }
        } 
else{
            System.out.println("El fichero
" + f1.getAbsolutePath() + " no existe");
        }   
    }
}

Ejemplo 3: Programa que muestra el


contenido de un directorio. En el ejemplo se muestra el contenido
del
directorio actual.
public static void main(String[] args) {
       
File directorio = new File(".");  //directorio actual
       
String[] lista = directorio.list();
        for (int i = 0; i < lista.length;
i++) {
           
System.out.println(lista[i]);
        }
 }
Ejemplo 4: El siguiente programa muestra la diferencia entre getPath(), getAbsolutePath()
y
getCanonicalPath(). Además usa el método
getProperty() de la clase System para obtener el directorio
de trabajo actual.
import java.io.File;
import java.io.IOException;
public class File8 {
   
public static void main(String[] args) throws IOException{
       
File f = new File("../../datos.dat");
       
String dirActual = System.getProperty("user.dir");
       
System.out.println("Directorio actual   " + dirActual);
       
System.out.println("getPath()           " + f.getPath());
       
System.out.println("getAbsolutePath()   " + f.getAbsolutePath());
       
System.out.println("getCanonicalPath()  " + f.getCanonicalPath());   
    }
}
La salida de este programa es
(según mi carpeta de trabajo):
Directorio
actual F:\curso\programación java\Ficheros\ejemplos\File8
getPath()         ..\..\datos.dat
getAbsolutePath()
F:\curso\programación java\Ficheros\ejemplos\File8\..\..\datos.dat
getCanonicalPath()F:\curso\programación
java\Ficheros\datos.dat

Ejemplo 5: El siguiente programa muestra el contenido del


directorio raíz de la unidad actual de trabajo y
de todos sus  subdirectorios de forma recursiva. Para cada
directorio se muestran primero los archivos y a
continuación las carpetas que
contienen de forma recursiva.
import
java.io.File;
public
class File5 {

    public static void main(String[] args) {


        recorrerDirectorios("/");
    }

    public static void


recorrerDirectorios(String ruta) {

puntocomnoesunlenguaje.blogspot.com/2013/05/clase-file-java.html 4/7
16/11/21 3:43 Programación Java: Clase File
        //Se crea un objeto file con la ruta del
directorio
        File
directorioBCN-SANTS
= new File(ruta);
Anuncios DE
HOSPITALET BURGOS
        //Se comprueba si la ruta existe LLOBREGAT
210.800 € Enviar comentarios ¿Por qué este anuncio?  189.700 €
        if
(!directorio.exists()) { 242.200 € Servihabitat.com
           
System.out.println("La ruta " + directorio.getAbsolutePath() +
" no existe.");
            return;
Más información Más información Más información
        }
        //Se comprueba si es un directorio
        if
(!directorio.isDirectory()) {
           
System.out.println("La ruta " + directorio.getAbsolutePath() +
" no es un directorio");
            return;
        }
       
System.out.println(directorio.getAbsolutePath());
        //obtener todo el contenido del directorio
        File[] lista
= directorio.listFiles();
        //se recorre el directorio y se muestran primero los
archivos
        for
(File s : lista) {
            if(s.isFile())
               
System.out.println("Archivo -> 
" + s.getName());
        }
        //se recorre de nuevo el directorio y se obtienen los subdirectorios
        for (File s
: lista) {        
            //Si es un directorio se vuelve a llamar al método
            if
(s.isDirectory()) {
               
recorrerDirectorios(s.getAbsolutePath());
            }
        }
 }
CREACIÓN DE FILTROS

Un filtro sirve para que


el método list devuelva solo aquellos archivos o carpetas que cumplan una
determinada condición. (que tengan una extensión determinada, contengan en su
nombre una cadena
determinada, empiecen por..., etc)

Un filtro es un objeto de
una clase que implementa el interface FilenameFilter.

FilenameFilter
tiene un solo método llamado accept
que devuelve un valor de tipo boolean:
public
interface FilenNameFilter{
            boolean accept (File ruta, String
nombre);
}
El
método recibe el directorio donde se encuentra el archivo (objeto File) y el nombre
del archivo (String).
Este
método lo utiliza el método list de File para decidir si un archivo o
directorio determinado se incluye o
no en el array que devuelve. Si accept
devuelve true se incluye y si devuelve false no se incluye. 

El método list llama de


form automática al método accept para cada uno de los archivos o
directorios.

Ejemplo de creación y
uso de un filtro:
Vamos
a crear un filtro para obtener todos los archivos que tiene una extensión
determinada.
Como
dijimos antes, un filtro es un objeto de una clase que implementa el interface
FileNameFilter, por lo
tanto tenemos que crear esta clase.
La
clase se llamará Filtro y debe
implementar el método accept de FilenameFilter.
En
este caso como queremos saber si un archivo tiene una determinada extensión el
método accept lo
podemos escribir utilizamos el método endsWith de String.

public
boolean accept(File ruta, String nombre) {
                 return nombre.endsWith(extension);
}

Para
entender mejor el método accept tenemos que ver la clase Filtro completa:
import java.io.FilenameFilter;
//Clase Filtro
implementa el interface FilenameFilter
public
class Filtro implements FilenameFilter {
    String extension;
    Filtro(String extension) {
        this.extension = extension;
   
}

   
//implementación del método accept del
interface
   
@Override
    public boolean accept(File ruta, String
nombre) {
        return nombre.endsWith(extension);
   
}
}

El programa que utiliza el filtro


para mostrar archivos que tienen una extensión determinada, en este caso
los
que tienen la extensión .pdf puede ser este:

import
java.io.File;
//Clase Principal
public
class File6 {
    public static void main(String[] args) {

puntocomnoesunlenguaje.blogspot.com/2013/05/clase-file-java.html 5/7
16/11/21 3:43 Programación Java: Clase File
        File ruta = new
File("/temas/teoria");
BCN-SANTS
        System.out.println("Archivos
Anuncios DE
HOSPITALET
.pdf
en el directorio " + ruta.getAbsolutePath()); BURGOS
        String[] lista 210.800 €
= ruta.list(new
Filtro(".pdf")); //se crea LLOBREGAT
el filtro y se le
pasa
Enviar comentarios ¿Por qué aeste
list anuncio?  189.700 €
        if (lista
== null) { 242.200 € Servihabitat.com
            System.out.println("Total: 0
archivos");
        } else {
Más información Más información Más información
            for (int i = 0; i <
lista.length; i++) {
                System.out.println(lista[i]);
            }
            System.out.println("Total:
" + lista.length);
        }
   
}
}
Más información sobre
FilenameFilter en la API de Java:
http://docs.oracle.com/javase/8/docs/api/java/io/FilenameFilter.html

Si te ha sido útil compártelo


Tweet

8 comentarios:

Anónimo 8 de enero de 2014, 6:52


Notable, muchas gracias !

Responder

Anónimo 23 de abril de 2014, 21:58

Me sirvió de mucho. Gracias.


Responder

Anónimo 3 de septiembre de 2014, 1:53


Ejemplos muy útiles!!!

Responder

Anónimo 21 de septiembre de 2017, 6:03

Excelente aporte
Responder

Unknown 21 de septiembre de 2017, 9:30


Perfecto Aporte

Responder

Germán G. 13 de febrero de 2018, 16:57

Excelente tutorial....mil gracias...Dios lo bendiga...


Responder

Enrique 13 de febrero de 2018, 22:21

Gracias a todos por los comentarios, me alegro de que os sea útil.


Responder

Pacheta 6 de agosto de 2020, 18:12


Gracias !

Responder

puntocomnoesunlenguaje.blogspot.com/2013/05/clase-file-java.html 6/7
16/11/21 3:43 Programación Java: Clase File

BCN-SANTS Anuncios DE
HOSPITALET BURGOS
Introduce tu comentario...
LLOBREGAT
210.800 € Enviar comentarios ¿Por qué este anuncio?  189.700 €
242.200 € Servihabitat.com

Más información
Comentar como:
Más información Más información
jhon.samame.v Cerrar sesión


Vista previa
Publicar
Avisarme

Entrada más reciente Inicio Entrada antigua

Suscribirse a:
Enviar comentarios (Atom)

LICENCIA

Programación Java by Enrique García Hernández

Esta obra está bajo una licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España License.

Para reconocer la autoría debes poner el enlace http://puntocomnoesunlenguaje.blogspot.com.es

Con la tecnología de Blogger.

puntocomnoesunlenguaje.blogspot.com/2013/05/clase-file-java.html 7/7

También podría gustarte