Witam,
Jeśli mam katalog o nazwie "example" i w nim jeszcze kilka naście podkatalogów i w któryś z nich plik o nazwie "file.txt". Jak napisać w javie algorytm, który przeszuka mi katalog "example" i znajdzie plik "file.txt" ? Jakaś pętla for :d ? Poda mi ktoś bibliotekę do tego ? dziki za wszelkie wskazówki :)
wiesz co to jest np rekurencja?
tu masz metodę do wyszukiwania rekurencyjnego. Wywyłaj ją z argumentem new File("example")
private void przeszukaj(File dir) {
for (File file : dir.listFiles()) {
if (file.isDirectory()) {
przeszukaj(file);
} else {
// tu sobie sprawdz czy to poszukiwany plik
}
}
}
To coś takiego ma być:
public class Prze {
private void przeszukaj(File dir) {
for (File file : dir.listFiles()) {
if (file.isDirectory()) {
przeszukaj(file);
} else {
// tu sobie sprawdz czy to poszukiwany plik
}
}
}
public static void main(String[] args) {
Prze o = new Prze("C:\\");
o.Przeszukaj("C:\\");
}
}
Odpal może sobie IDE to zobaczysz, że nawet się nie skompiluje...
public class Prze {
private void przeszukaj(File dir) {
for (File file : dir.listFiles()) {
if (file.isDirectory()) {
przeszukaj(file);
} else {
// tu sobie sprawdz czy to poszukiwany plik
}
}
}
public static void main(String[] args) {
Prze o = new Prze();
o.przeszukaj("C:\\");
}
}
nazwy metod z małej,
odwołujesz się do konstruktora, którego nie ma
mogę ci to napisać za 40zł: [email protected]
@poniatowski: zacznij uzywac Google, bo szybko przestana Cie tu lubic :>
@madierfakier dziękuję za pomoc :) przepraszam, że Cię tak wymęczyłem banalnymi pytaniami :) już śmiga :)
private void przeszukaj(File dir) jak mogę zastąpić (File dir) na np String? Da radę bo to mi wszystko psuje. I gdzieś póxniej te File dir umieścić?
Z tym to już nie pomogę - chcesz być programistą - takie rzeczy musisz sam wykombinować, bo nie wymagają żadnej wiedzy tajemnej ani żadnych sztuczek.
JDK7 ma przyjemniejsze rozwiązanie - FileVisitor (pisane z palca):
Path katalog = Paths.get("example");
Path szukany = Paths.get("file.txt");
Files.walkFileTree(path, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
if (file.endsWith(szukany)) {
// .. tu coś zrób z plikiem
return FileVisitResult.TERMINATE; // znaleziony, kończymy
} else {
return FileVisitResult.CONTINUE; // szukamy dalej
}
}
}
Prze q = new Prze(file.getPath(), p);
Chcesz znaleźć p, a nie "dupa.txt":
if(file.getName().equals("dupa.txt")){