Programa Java para buscar/eliminar archivos basados ​​en extensiones

Podemos usar FilenameFilter en Java para anular el método accept(File dir, String name) para ejecutar la operación de filtrado de archivos. La interfaz de nombre de archivo tiene un método accept(). Comprueba si un archivo determinado debe incluirse en una lista de archivos. Podemos verificar cada archivo en el directorio pasado implementando este método. Si el archivo tiene la extensión requerida, se incluye, de lo contrario se descarta. 

Sintaxis:

accept(File dir, String name)

Ahora, lo siguiente que entra en juego es cómo incluir los archivos en una lista con la extensión dada, para eso hay un método File.list() que toma la instancia de FilenameFilter. la lista Devuelve una array de strings que nombran los archivos y directorios en el directorio indicado por este nombre de ruta abstracto que satisface el filtro especificado. Entonces, analicemos esta función en detalle para obtener una mejor comprensión al manejar los archivos.

El método list() es parte de la clase File . La función devuelve una array de la string que denota los archivos en un nombre de ruta abstracto dado si el nombre de ruta es un directorio; de lo contrario, devuelve nulo. La función es una función sobrecargada. Una de las funciones no tiene ningún parámetro y la otra función toma el objeto FilenameFilter como parámetro, como se describe a continuación.

Firma de función:

public String[] list()
public String[] list(FilenameFilter f)

Sintaxis de la función:

file.list()
file.list(filter)

Parámetros: La función es una función sobrecargada. Una de las funciones no tiene ningún parámetro y la otra función toma el objeto FilenameFilter como parámetro

Valor devuelto: la función devuelve una array de strings o un valor nulo si el objeto de archivo es un archivo. 

Excepción: este método arroja una excepción de seguridad si la función no tiene acceso de escritura al archivo.

Procedimiento: 

Seguiremos dos pasos para eliminar archivos en base a extensiones:

  1. Implemente la interfaz FileNameFilter para listar archivos con la extensión dada.
  2. Recorre esos archivos para eliminarlos usando el método delete() .

Ejemplo:

Java

// Java Program to find/delete files based on extensions
 
// Importing input output classes
import java.io.*;
 
// Class 1
// Main class
// To check for a file
class GFG {
 
    // Member variables of this class
 
    // File directory
    private static final String FILE_DIRECTORY
        = "/Users/mayanksolanki/Desktop/";
    // File extension
    private static final String FILE_EXTENSION = ".jpeg";
 
    // Method of this class
    public void deleteFile(String folder, String extension)
    {
 
        // Creating filter with given extension by
        // creating an object of FileExtFilter
        FileExtFilter filter = new FileExtFilter(extension);
 
        // Now, creating an object of FIle  class
        File direction = new File(folder);
 
        // Cresting an array if strings to
        // list out all the file name
        // using the list() with .txt extension
        String[] list = direction.list(filter);
 
        // Iterating over the array of strings
        // using basic length() method
        for (int i = 0; i < list.length; i++) {
            // printing the elements
            System.out.println(list[i]);
        }
 
        // Base condition check when array of strinfg is
        // empty Then simply return
        if (list.length == 0)
            return;
 
        File fileDelete;
 
        // Now looking for the file  in the
        for (String file : list) {
 
            String temp = new StringBuffer(FILE_DIRECTORY)
                              .append(File.separator)
                              .append(file)
                              .toString();
 
            // Storing the file
            fileDelete = new File(temp);
 
            // Checking whether the file is deleted
            boolean isdeleted = fileDelete.delete();
 
            // Print true if file is deleted
            System.out.println("file : " + temp
                               + " is deleted : "
                               + isdeleted);
        }
    }
 
    // Method 2
    // Main driver method
    public static void main(String args[])
    {
 
        // Calling the deleteFile() method over the file
        // FileCheker() method to check existence for the
        // file
 
        // Delete the file with FILE_EXTENSION from
        // FILE_DIRECTORY using the deleteFile() method s
        // created above
        new GFG().deleteFile(FILE_DIRECTORY, FILE_EXTENSION);
    }
}
 
// Class 2
// Helper class
// Which in itself is implementing FilenameFilter Interface
class FileExtFilter implements FilenameFilter {
 
    // Extension
    private String extension;
 
    // Comparator
    public FileExtFilter(String extension)
    {
 
        // This keyword refers to current object itself
        this.extension = extension;
    }
 
    public boolean accept(File directory, String name)
    {
 
        // Returning the file name along with the file
        // extension type
        return (name.endsWith(extension));
    }
}

Producción:

Publicación traducida automáticamente

Artículo escrito por KapilChhipa y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *