我正在搜索一个名为“myFile.java”的文件,该文件包含在有更多文件夹的文件夹中,例如:
这里是我所做的代码,我想到了一个递归调用(我作为参数文件作为目录发送,文件名作为字符串发送)
private static void buscarArchivo(String fichero, File directorioFile) {
//Primero que todo listo mis ficheros utilizando .listFiles
//este método devuelve todos los ficheros asociados al directorio en un array de Files.
File[] lista = directorioFile.listFiles();
if (lista != null) {
for (File elemento : lista) {
if (elemento.isDirectory()) { //.isDirectory comprueba si el fichero instanciado en una clase File es un directorio o no
//Anteriormente solo comprobamos que si existia el directorio pero no el archivo.
buscarArchivo(fichero, elemento);
} else if (fichero.equalsIgnoreCase(elemento.getName())) {
//buscarArchivo(fichero, elemento);
System.out.println("Archivo encontrado con exito! ");
System.out.println (elemento.getParentFile());
System.out.println(elemento.getName());
System.out.println("\n-----------------------------");
}
}
}
}
在 main 中调用该方法时,它仅指示该路由(如果存在)未执行,我在做什么错?
public static void main(String args[]){
String fichero = "MiArchivo.java";
//Lo primero que hay que hacer es crear un objeto de tipo File con el nombre del directorio a listar.
File directorioFile = new File("C:\\Users\\Ruta");
//Comprueblo que el directorio existe con un metodo que se llama .(exist) que hace parte de la clase File de java
if (directorioFile.exists()){
System.out.println("El directorio existe, procediendo a buscar el fichero...");
//Primero listo todos los archivos de la carpeta
buscarArchivo(fichero, directorioFile);
}
else{
System.out.println("El directorio no existe, verifique la ruta...");
}
}
注意:当事情没有解决时,重要的是:
调试程序,一步步检查执行,是否有预期值出来。当他们不出来时,调查原因。
阅读所用方法的文档。
解决方案:
java.io.File#listFiles()的 Javadoc;我的重点:
listFiles()只返回文件,而不是目录。要让它返回所有内容,您可以使用java.io.File#list()来返回文件和目录。
如果(例如)您打印了listFiles获得的元素列表,您会看到目录没有出现,您将能够拉出线程。
实际上,您的方法离工作不远。你错过了三件事(详情如下)