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
- Cree una clase MyFilenameFilter que implemente la interfaz FilenameFilter y anule el método accept() de la interfaz FilenameFilter.
- 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.
- El método accept() devuelve verdadero si el nombre del archivo comienza con las iniciales especificadas; de lo contrario, devuelve falso.
- 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.
- 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.
- El método list() se invoca en el objeto dir que devuelve una array de archivos que cumplen la condición.
- 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
- Se llama al método list() en el objeto dir de la clase File y la lista de archivos en la array ‘flist’.
- Cada archivo en la array ‘flist’ se compara con el nombre de archivo requerido.
- 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