Visualizzazione dei risultati da 1 a 9 su 9

Hybrid View

  1. #1
    ciao andbin!

    intanto grazie per la risposta.
    mi sono un pò documentato, ed ho "creato" questo metodo:
    codice:
        public ArrayList<String> getImages2(Path directory, boolean recursive) throws IOException {
            ArrayList<String> listImages = new ArrayList<>();
            Files.walkFileTree(directory, new SimpleFileVisitor<Path>() {
                @Override
                public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
                    if (file.toFile().getName().toLowerCase().endsWith(".jpg") || file.toFile().getName().toLowerCase().endsWith(".png")) {
                        listImages.add(file.toFile().toString());
                    }
                    return (recursive) ? FileVisitResult.CONTINUE : FileVisitResult.TERMINATE;
                }
            });
            return listImages;
        }
    funzionare funziona, mi daresti un tuo parere?
    nel senso, potrebbe andare o mi è sfuggito qualcosa?
    considera che quello che mi interesserebbe è questo:
    -scansionare una directory, scegliendo se farlo in maniera ricorsiva o meno
    -aggiungere all'ArrayList solo i file che terminano con le estensioni impostate

    poi l'ArrayList lo uso da un'altra parte.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da fermat Visualizza il messaggio
    funzionare funziona, mi daresti un tuo parere?
    nel senso, potrebbe andare o mi è sfuggito qualcosa?
    Sì, qualcosa ti è sfuggito. Innanzitutto il tuo codice compila solo su Java 8 (i controlli sull'uso di variabili locali da parte di anonymous inner class è stato "rilassato"). Su Java 7 non compila perché recursive e listImages non sono final.
    Se il tuo codice deve funzionare solo da Java 8 in poi, ok. Altrimenti devi correggere.

    Questo comunque è il problema minore. Il problema maggiore è la comprensione di cosa succede con walkFileTree. Se recursive è true scansioni in "profondità". Ma se recursive è false prende 1 solo file e basta. Insomma, non scansioni completamente solo la directory in argomento.

    Se vuoi scansionare non in profondità, allora o usi l'altro walkFileTree che ha il maxDepth, oppure usi l'altro metodo di Files che è newDirectoryStream, apposta per iterare su una singola directory.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.