Oppure

Loading
18/06/13 23:15
tullio1995
Appena trova il file stampa ESEGUITO! però non esce dal ciclo e continua :-?
aaa
19/06/13 3:33
pierotofy
Assicurati di studiare bene il codice qui sotto e di leggere un pò di più sulla ricorsione. it.wikipedia.org/wiki/…

Occhio a & e &&. Sono operatori diversi.

public static String scansionaDirectory(File dir) throws FileNotFoundException, IOException {
        File[] elementi = dir.listFiles();
        File file = null;
        String b="application.java";
        for (int i = 0; i < elementi.length; i++) {
            file = elementi[i];
            String a=file.getName();
            System.out.println(a);
            if (a.equals(b)){
                return file.getAbsolutePath(); // Trovato              
            }          
            else if (file.isDirectory() && !file.isHidden()) {
                String scansione = scansionaDirectory(file);
                if (!scansione.equals("falso")) return scansione; // Trovato 
            }          
         }
        return "falso";
    }


Problemi con questo codice da lasciare come esercizio: può essere strutturato in maniera più semplice (scopri come?) e cosa succede se ho un file chiamato "falso" in una delle directory?
Ultima modifica effettuata da pierotofy 19/06/13 3:37
Il mio blog: piero.dev
19/06/13 10:14
tullio1995
Ho provato a mettere un file nominato falso in una delle directory, ma non da nessun errore!
aaa
19/06/13 10:18
probabilmente intendeva false
19/06/13 10:25
tullio1995
Stessa cosa, funziona perfettamente...
aaa
19/06/13 10:32
ah no ok, intendeva proprio falso per il return.
19/06/13 10:37
tullio1995
Forse perchè nel main ho questo if
if ("falso".equals(path)){
System.out.println("Non trovato");
}
aaa
19/06/13 14:03
pierotofy
Accorgimento, siccome usi file.getAbsolutePath(); anche se hai un file chiamato "falso" ci sara' sempre una path preposta al nome del file, quindi funzionera'. Ma il punto del discorso e' che "falso" come stringa non e' un buon indicatore per informare che il file non e' stato trovato. Usa una stringa vuota ("";) al suo posto.
Il mio blog: piero.dev