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
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: