Ho una cartella con questa strutturaJava copiare una cartella escludendo alcuni file interno
mainFolder
--Sub1
--File .scl
--File .awl
--Other files
--Sub2
--Files
--Sub3
--Sub4
voglio copiare in un'altra posizione ma voglio la SUB3 da evitare e (a seconda da la situazione) alcuni file dal Sub1
Ecco un estratto da quello che ho fatto finora:
FileUtils.copyDirectory(srcDir, dstDir, new FileFilter() {
public boolean accept(File pathname) {
// We don't want 'Sub3' folder to be imported
// + look at the settings to decide if some format needs to be
// excluded
String[] ignoreList= new String[]{
!Settings.getSiemensOptionAWL() ? ".awl":"uselessStringWilNeverBeFound",
!Settings.getSiemensOptionSCL() ? ".scl":"uselessStringWilNeverBeFound",
"Sub3"
};
return !(ignoreFile(pathname, ignoreList) && pathname
.isDirectory());
}
}, true);
public static boolean ignoreFile(File file, String[] ignoreList) {
for (final String ignoreStr : ignoreList)
if (file.getAbsolutePath().contains(ignoreStr))
return true;
return false;
}
Apparentemente sembra funzionare. Ma penso sia una soluzione molto brutta ... Qualcuno sa un modo migliore?
P.S: ovviamente Settings.getSiemensOptionAWL() è solo funzione booleana Taht tornare la mia decisione
Potrebbe essere facile copiare l'intera directory nella nuova posizione, quindi eliminare i file (da quella copia) che non dovrebbero essere lì. Ovviamente questo non sarà appropriato se il motivo è legato alla sicurezza piuttosto che alla funzionalità di base. –
Capisco cosa intendi ... ma non puoi immaginare che cosa l'utente ha il rischio di copiare i dati che non è ciò che l'utente deve avere.(non è il caso, ma voglio avere una soluzione pulita) :) – Stefano
anche ... a volte a volte funziona, ma a volte no ... forse c'è solo un modo migliore per lo stesso pensa! – Stefano