Przeszukiwanie katalogów

0

Witam
Chcę przeszukać dany katalog w celu znalezienia konkretnego pliku. Chcę użyć tej metody do wyszukiwania rekurencyjnego, którą znalazłem na forum. Czy byłby ktoś w stanie wyjaśnić mi jak ona działa abym mógł ją poprawić ( wysypuje w chiwli obecnej błedy) i wykorzystać?

 public class Szukajplik {
		 
		 private void przeszukaj(File dir) {
		         for (File file : dir.listFiles()) {
		             if (file.isDirectory()) {
		                 przeszukaj(file);
		             } else {
		            //tu sprawdze czy to poszukiiwany plik
		            	}
		             }
		         }
		     }
		 
		  
		        public static void main(String[] args) { 
		  
		          Szukajplik o = new Szukajplik();
		          o.przeszukaj(new File("C:/"));
		          
		 }
1

Sprawdź, czy listFiles() nie zwraca null.

1

ten kod bierze jako parametr lokalizację i przeszukuje zawartość, jeśli napotka na folder metoda rekurencyjnie wywołuje samą siebie, aż przeszuka wszystkie podfoldery i leci dalej. Nie wiem na ile to wydajne będzie w przypadku dużej ilości ścieżek i plików - jeśli lecisz od C:/ to może być słabo. Java ma bardziej wysokopoziomowe rozwiązania do takich rzeczy, zobacz jak mogłoby to wyglądać:

 private void przeszukaj(String dir) {
        try (Stream<Path> paths = Files.walk(Paths.get(dir))) {
            paths.filter(Files::isRegularFile).forEach(System.out::println);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

i w main wywołaj ze Stringiem , tylko może nie zaczynaj od C:/ tylko dalej C:/...../..../....../, żeby nie orać po systemie itp.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.