2012-06-27 13 views
12

Próbuję sprawdzić konkretny plik w danym katalogu. Nie chcę kodu, ale chcę naprawić ten, który mam. Jedyną różnicą w tym pytaniu jest to, że szukam plików z rozszerzeniem .MOD.sprawdzanie, czy plik istnieje w określonym katalogu

mam kod gotowe: -

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

Ale z jakichś powodów, to nie działa. Nie rozumiem dlaczego, czy ktokolwiek może znaleźć tutaj jakiś błąd?

+0

pan już wydrukowana wartość tmp i sprawdź, czy plik istnieje naprawdę? A jeśli tak, to która env jest ta (Windows lub Linux) w plikach linuksowych jest rozróżniana wielkość liter ... –

+0

Tak Próbowałem wydrukować wartość temp, a plik rzeczywiście istnieje w katalogu. Jest to system operacyjny Windows, ale parametr 'file' i rzeczywista nazwa pliku w katalogu są rozróżniane wielkości liter. – gkris

Odpowiedz

30

Czy spodziewasz się, że plik temp.MOD znajduje się w bieżącym katalogu (katalogu, z którego uruchamiasz aplikację), czy chcesz, aby znajdował się w folderze "katalog"? W tym drugim przypadku spróbuj utworzyć plik w ten sposób:

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

Sprawdź również uprawnienia do pliku, ponieważ spowoduje to również błędy uprawnień. Przypadek może być również przyczyną problemu, o którym wspomniał Spaeth.

+0

Tak, to drugie, to działa! :) dzięki – gkris

+0

Cieszę się, że pomogło. – n0rm1e

3

To tutaj masz błąd.

String temp = file + ".MOD"; 

I

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

Kod boolean check = new File(temp).exists(); sprawdzi pliku w bieżącym katalogu nie w wymaganym katalogu.

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

tak. dzięki. houman001 po prostu wskazał to samo. – gkris

+0

@ gkris i musisz użyć .equals() w pętli for, –

+0

dla pętli jest kolejną metodą sprawdzania tego samego istnienia pliku. Miałem 2 metody sprawdzania tej samej funkcji, ponieważ żadna nie działała. Teraz mogę bezpiecznie usunąć całą pętlę for. Dzięki jeszcze raz. – gkris

3

Spróbuj ..............

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

to nie pomoże, ponieważ nie sprawdzam pliku w bieżącym katalogu. Tak czy inaczej dostałem odpowiedź i ją również zaakceptowałem. Dzięki – gkris

+0

Dobrze, co mam na myśli w ścieżce ... ok nowy plik ("./ nazwa_pliku"); "." (kropka) operator oznacza bieżący katalog –

+0

tak. I DONT chcę sprawdzić bieżący katalog. – gkris

Powiązane problemy