2012-06-27 15 views
12

Ich versuche nach einer bestimmten Datei in einem bestimmten Verzeichnis zu suchen. Ich möchte den Code nicht, aber ich möchte den Code reparieren, den ich habe. Der einzige Unterschied in dieser Frage ist, dass ich nach Dateien mit der Erweiterung .MOD suche.Überprüfen, ob die Datei in einem bestimmten Verzeichnis existiert

Ich habe den Code bereit: -

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; 
} 

Aber aus irgendwelchen Gründen, funktioniert es nicht. Ich verstehe nicht warum, kann irgendjemand hier einen Fehler finden?

+0

haben Sie bereits den tmp Wert ausgedruckt und überprüfen, ob die Datei vorhanden ist wirklich? Und wenn ja, welche Env ist dies (Windows oder Linux) in Linux-Dateien Groß-und Kleinschreibung beachten ... –

+0

Ja, ich habe versucht, den Temp-Wert und die Datei tatsächlich in dem Verzeichnis existiert. Es ist Windows OS, aber der 'file' Parameter und der tatsächliche Name der Datei im Verzeichnis sind Groß- und Kleinschreibung gleich. – gkris

Antwort

30

Erwarten Sie, Temp.MOD-Datei im aktuellen Verzeichnis (das Verzeichnis, aus dem Sie Ihre Anwendung ausführen), oder Sie möchten, dass es in den Ordner "Verzeichnis" sein? Im letzteren Fall versuchen, die Datei auf diese Weise zu erstellen:

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

Überprüfen Sie auch für die Dateiberechtigungen, da es auch auf die Erlaubnis Fehler fehl. Ein Fall, der sensitiv ist, könnte auch die Ursache des Problems sein, wie Spaeth erwähnte.

+0

ja das ist der fall und das funktioniert! :) danke – gkris

+0

Froh, dass es geholfen hat. – n0rm1e

3

Hier haben Sie den Fehler.

String temp = file + ".MOD"; 

Und

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

Der Code boolean check = new File(temp).exists(); wird im aktuellen Verzeichnis nicht im gewünschten Verzeichnis für die Datei überprüfen.

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

ja. Vielen Dank. houman001 hat gerade darauf hingewiesen. – gkris

+0

@ gkris und Sie müssen .equals() in der for-Schleife verwenden –

+0

for-Schleife ist nur eine andere Methode zur Überprüfung der gleichen Datei Existenz. Ich hatte 2 Methoden, um die gleiche Funktion zu überprüfen, weil keine funktionierte. Jetzt kann ich die ganze for-Schleife sicher entfernen. Danke noch einmal. – gkris

3

Try this ..............

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

das wird nicht helfen, weil ich nicht nach der Datei im aktuellen Verzeichnis suche. Wie auch immer, ich bekam die Antwort und akzeptierte sie auch. Danke – gkris

+0

Nun, das, was ich meine im Pfad ... ok neue Datei ("./ file_name"); "." (dot) operator bedeutet das aktuelle Verzeichnis –

+0

ja. Ich möchte das aktuelle Verzeichnis nicht überprüfen. – gkris

Verwandte Themen