Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343

    copiare file di una cartella e delle sottocartelle [JAVA]

    Salve ragazzi dovrei copiare file di una cartella e delle sue sottocartelle escludendo alcune estensioni.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Sposto nel forum dedicato a Java.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da 84morena Visualizza il messaggio
    Salve ragazzi dovrei copiare file di una cartella e delle sue sottocartelle escludendo alcune estensioni.
    Ok, quali sono i dubbi/problemi esattamente?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    dovrei copiare solo alcune tipologie di file ed escludere altre e mantenere la stessa struttura delle sottocartelle.

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    La cosa non è complessa: puoi scrivere un metodo ricorsivo che prende come parametri un oggetto File che rappresenta la directory sorgente e un oggetto File che rappresenta la directory destinazione. All'interno recuperi l'elenco dei file della directory sorgente e con un banale ciclo for li scorri tutti (e qui puoi già applicare il filtro per estensione).

    Se l'i-esimo elemento è una directory, richiami ricorsivamente il metodo (passando i parametri corretti), altrimenti se è un file lo copi.

    Per la copia di un singolo file scriverai una funzioncina che verifica se il path destinazione esiste (se non esiste, lo crei). Poi puoi usare le api NIO o scrivere manualmente il codice di copia (anch'esso piuttosto banale).

    I metodi della classe File che ti tornano utili sono:

    listFiles(FileFilter filter)
    isDirectory()
    getName()


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    un po complicata la cosa per me...

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da 84morena Visualizza il messaggio
    un po complicata la cosa per me...
    Per trovare ad esempio tutti i PDF in una directory, è sufficiente:

    codice:
    File dir = new File("C:\\blabla");
    
    File[] elementi = dir.listFiles(new FileFilter() {
        @Override
        public boolean accept(File f) {
            return f.isDirectory()
                    || (f.isFile() && f.getName().toLowerCase().endsWith(".pdf"));
        }
    });
    
    for (File elemento : elementi) {
        // usa elemento ......
    }

    La implementazione del FileFilter (fatta con una anonymous inner-class) "accetta" solo i file con estensione .pdf (maiuscolo/minuscolo che sia) PIU' qualunque directory.
    Il fatto di accettare anche le directory non servirebbe se dovessi solo elaborare una singola directory. Ma è ovviamente necessario se volessi scansionare in "profondità" il file-system tramite approccio ricorsivo.

    Poi naturalmente si possono fare varianti, ad esempio prendere prima solo tutti i file interessati e poi con un altro listFiles prendere solo le directory per andare più in profondità.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    perfetto nel mio caso devo prendere tutto tranne i pdf

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da 84morena Visualizza il messaggio
    perfetto nel mio caso devo prendere tutto tranne i pdf
    Allora ad esempio

    || (f.isFile() && !f.getName().toLowerCase().endsWith(".pdf"));

    nota la "negazione".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java 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 © 2024 vBulletin Solutions, Inc. All rights reserved.