Znajdywanie sciezki do danego pliku rekursywnie zadanie

0

Hej, chciałem żeby mi terminal wyswietlil sciezke do np test.txt co jest ukryty w c:/users/users/costam/test.txt - w programie chce podac początek szukania jako c:/ i ma wchodzić w każdy katalog coraz glebiej ( tak długo jak to jest directory ). a jak na końcu nic nie ma ani nie znalazł pliku to wychodzi i szuka w kolejnym pomysły jak by taka metodka wygladala

0

A no tak by wyglądała (pseudokod):

metoda Szukaj(nazwa_pliku, bieżąca_ścieżka) {
    jeśli istnieje_plik(bieżąca_ścieżka + "/" + nazwa_pliku) {
        zwróć bieżąca_ścieżka + "/" + nazwa_pliku;
    } w przeciwnym razie {
        dla każdego podkatalogu z bieżącej_ścieżki {
            wynik = Szukaj(nazwa_plik, bieżąca_ścieżka + "/" + podkatalog);
            jeśli wynik != NULL {
                zwróć wynik;
            }
        }
    }
    zwróć NULL;
}

Powyższa wersja zwraca tylko jeden, pierwszy napotkany, wynik. Można ją przerobić na zwracanie całej listy w dość prosty :) sposób.

0

Polecam WalkFileTree, gotowe rozwiązanie w Javie

0

dzięki wielkie

0
    public static void main(String[] args) {
        recurrentSearch("C:/Users", "/ideaprojects");
    }

    public static void recurrentSearch(String path, String name) {
        File file = new File(path);
        if (file.isDirectory()) {
            File[] listofFiles = file.listFiles();
            for (File f : listofFiles) {
                if (f.getName().startsWith(name)) {
                    System.out.println(f.getAbsolutePath());
                }
                if (f.isDirectory()) {
                    recurrentSearch(f.getAbsolutePath(), name);
                }
            }
        }
    }

zwraca mi null pointera - co tu byscie zmienili?

0

hmm dobra działa, dla głębszego wejścia, z samego c:/ albo C:\Users wyskakiwal null pointer - pomysły czemu ?

0

nie mogę edytować swoich postow z jakiegoś powodu, wiec sry za spam ale nie moglo znaleźć bo dalem c:/ a nie c:

1 użytkowników online, w tym zalogowanych: 0, gości: 1