2012-06-27 25 views
12

Estoy tratando de buscar un archivo específico en un directorio determinado. No quiero el código pero quiero arreglar el que tengo. La única diferencia en esta pregunta es que busco archivos con una extensión .MOD.comprobando si el archivo existe en un directorio específico

que tienen el código listo: -

public static int checkExists(String directory, String file) { 
    File dir = new File(directory); 
    File[] dir_contents = dir.listFiles(); 
    String temp = file + ".MOD"; 
    boolean check = new File(temp).exists(); 
    System.out.println("Check"+check); // -->always says false 

    for(int i = 0; i<dir_contents.length;i++) { 
     if(dir_contents[i].getName() == (file + ".MOD")) 
      return Constants.FILE_EXISTS; 
    } 

    return Constants.FILE_DOES_NOT_EXIST; 
} 

Pero por alguna razón, no funciona. No entiendo por qué, ¿alguien puede encontrar algún error aquí?

+0

¿ya impreso el valor de tmp y comprobar si realmente existe el archivo? Y si es así, qué env es esto (Windows o Linux) en los archivos de Linux son sensibles a las mayúsculas y minúsculas ... –

+0

sí Intenté imprimir el valor temporal y el archivo de hecho existe en el directorio. Es Windows OS, pero el parámetro 'archivo' y el nombre real del archivo en el directorio son mayúsculas y minúsculas. – gkris

Respuesta

30

¿Espera que el archivo temp.MOD esté en el directorio actual (el directorio desde el que ejecuta su aplicación), o desea que esté en la carpeta "directorio"? En este último caso, intente crear el archivo de esta manera:

boolean check = new File(directory, temp).exists(); 

también para comprobar los permisos de archivo, ya que se producirá un error en errores de permiso también. Caso sensiblemente también podría ser la causa del problema como mencionó Spaeth.

+0

sí, este es el caso y esto funciona! :) gracias – gkris

+0

Me alegro de que ayudó. – n0rm1e

3

Aquí es donde tienes el error.

String temp = file + ".MOD"; 

Y

if(dir_contents[i].getName() == (file + ".MOD")) 

El código boolean check = new File(temp).exists(); buscará el archivo en el directorio actual no está en el directorio deseado.

String dirName="/home/demo"; 
    File dir = new File(dirName); 
    File[] dir_contents = dir.listFiles(); 
    String temp = dirName+"/"+"README" + ".MOD"; 
    boolean check = new File(temp).exists(); 
    System.out.println("Check" + check); // -->always says false 

    for (int i = 0; i < dir_contents.length; i++) { 
     if (dir_contents[i].getName().equals("README" + ".MOD")) 
      return Constants.FILE_EXISTS; 
      } 

    return Constants.FILE_DOES_NOT_EXIST; 
+0

sí. Gracias. houman001 acaba de señalar lo mismo. – gkris

+0

@gkris y debe usar .equals() en el ciclo for –

+0

for loop es solo otro método para verificar la existencia del mismo archivo. Tenía 2 métodos para verificar la misma función porque ninguno estaba funcionando. Ahora puedo eliminar con seguridad todo el ciclo for. Gracias de nuevo. – gkris

3

Prueba este ..............

File f = new File("./file_name"); 
if(f.exists()){ 
    System.out.println("success"); 
} 
else{ 
    System.out.println("fail"); 
} 
+0

esto no ayudará porque no estoy buscando el archivo en el directorio actual. De todos modos, recibí la respuesta y la acepté también. Gracias – gkris

+0

Bueno, eso es lo que quiero decir en la ruta ... ok new File ("./ file_name"); "." (punto) operador significa el directorio actual –

+0

sí. NO QUIERO verificar el directorio actual. – gkris

Cuestiones relacionadas