Programa Java para buscar un archivo en un directorio

La búsqueda de archivos en Java se puede realizar utilizando la clase de archivo y la interfaz FilenameFilter. La interfaz FilenameFilter se utiliza para filtrar archivos de la lista de archivos. Esta interfaz tiene un método booleano accept(File dir, String name) que se implementa para encontrar los archivos deseados de la lista devuelta por el método java.io.File.list(). Este método es muy útil cuando queremos encontrar archivos con una extensión específica dentro de una carpeta.

Primer enfoque

  1. Cree una clase MyFilenameFilter que implemente la interfaz FilenameFilter y anule el método accept() de la interfaz FilenameFilter.
  2. El método accept() toma dos argumentos de los cuales el primero es el nombre del directorio y el segundo es el nombre del archivo.
  3. El método accept() devuelve verdadero si el nombre del archivo comienza con las iniciales especificadas; de lo contrario, devuelve falso.
  4. La clase FindFile contiene el método principal que acepta la entrada del usuario como el directorio deseado para buscar y las iniciales del archivo para buscar.
  5. El objeto de directorio de la clase File se inicia con el nombre del director y el objeto de filtro de la clase MyFilenameFilter se inicia con las iniciales proporcionadas por el usuario.
  6. El método list() se invoca en el objeto dir que devuelve una array de archivos que cumplen la condición.
  7. La array se repite y el nombre de los archivos requeridos se imprime en la pantalla de salida.

Implementación de código

Java

// Java Program to Search for a File in a Directory
import java.io.*;
  
// MyFilenameFilter class implements FilenameFilter
// interface
class MyFilenameFilter implements FilenameFilter {
    
    String initials;
    
    // constructor to initialize object
    public MyFilenameFilter(String initials)
    {
        this.initials = initials;
    }
    
    // overriding the accept method of FilenameFilter
    // interface
    public boolean accept(File dir, String name)
    {
        return name.startsWith(initials);
    }
}
  
public class Main {
    
    public static void main(String[] args)
    {
        // Create an object of the File class
        // Replace the file path with path of the directory
        File directory = new File("/home/user/");
  
        // Create an object of Class MyFilenameFilter
        // Constructor with name of file which is being
        // searched
        MyFilenameFilter filter
            = new MyFilenameFilter("file.cpp");
  
        // store all names with same name 
        // with/without extension
        String[] flist = directory.list(filter);
  
        // Empty array
        if (flist == null) {
            System.out.println(
                "Empty directory or directory does not exists.");
        }
        else {
  
            // Print all files with same name in directory
            // as provided in object of MyFilenameFilter
            // class
            for (int i = 0; i < flist.length; i++) {
                System.out.println(flist[i]+" found");
            }
        }
    }
}

 

Producción

file.cpp found

Segundo enfoque

  1. Se llama al método list() en el objeto dir de la clase File y la lista de archivos en la array ‘flist’.
  2. Cada archivo en la array ‘flist’ se compara con el nombre de archivo requerido.
  3. Si se encuentra una coincidencia, se imprime en la pantalla.

Este método es un poco diferente al anterior ya que el usuario necesita especificar el nombre exacto del archivo en este caso. 

Implementación de código

Java

// Java Program to Search for a File in a Directory
import java.io.File;
  
public class Main {
    
    public static void main(String[] argv) throws Exception
    {
        // Create an object of the File class
        // Replace the file path with path of the directory
        File directory = new File("/home/user/");
  
        // store all names with same name
        // with/without extension
        String[] flist = directory.list();
        int flag = 0;
        if (flist == null) {
            System.out.println("Empty directory.");
        }
        else {
  
            // Linear search in the array
            for (int i = 0; i < flist.length; i++) {
                String filename = flist[i];
                if (filename.equalsIgnoreCase("file.cpp")) {
                    System.out.println(filename + " found");
                    flag = 1;
                }
            }
        }
  
        if (flag == 0) {
            System.out.println("File Not Found");
        }
    }
}

 

Producción

file.cpp found

Publicación traducida automáticamente

Artículo escrito por Shreyasi_Chakraborty 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 *