View Full Version : [JAVA] - Array di File
Ciao a tutti, è un po che ci lavoro su, ma non ho trovato soluzione a questo mio problema che vi espongo.
Ho due liste di file:
File f1 = new File("c:/prova");
File f2 = new File("c:/prova2");
File file1[]= f1.listFiles();
File file2[]= f2.listFiles();
Vorrei avere una nuova lista di File (File unionFile[];) che sia l'unione tra le due. Non esiste un comando tipo l'append tra le stringhe? E se no come posso fare a risolvere questo mio problema.
Spero che qualcuno sappia aiutarmi.
Grazie
non so se armeggiando con le collections é possibile risolvere in maniera piu facile, comunque questa é la soluzione manuale:
File[] unioneFile = new File[file1.length + file2.length];
System.arraycopy(file1, 0, unioneFile, 0, file1.length);
System.arraycopy(file2, 0, unioneFile, file1.length, file2.length);
incipit1970
23-01-2009, 15:15
La risposta di fero86 è validissima, ma se hai un numero imprecisato di array da unire diventerebbe complicato gestirla (ad esempio, se devi cercare in tante sottocartelle e fare una lista di tutti i file da elaborare). Usare le collection è senz'altro più conveniente:
List<File> unioneFile = new ArrayList<File>();
// Ora puoi caricare i risultati dei listFiles() sulla lista
// Puopi fare tanti addAll() secondo le tue logiche, tutti i file
// nel array passato in parametro vengono aggiunti alla lista
unioneFile.addAll(Arrays.asList(f1.listFiles()));
// Per percorrere la lista
for (Iterator i = unioneFile.iterator(); i.hasNext(); ) {
File file = i.next();
// Qui puoi fare quello che devi fare con ognuno dei file della lista
System.out.println(file.getName());
}
// Oppure converti la lista in un array:
File[] risultato = unioneFile.toArray(new File[1]);
N.B.: In questo caso ho usato i generics per la lista, quindi serve Java 1.5 o superiore.
astorcas
23-01-2009, 15:36
La risposta di fero86 è validissima, ma se hai un numero imprecisato di array da unire diventerebbe complicato gestirla (ad esempio, se devi cercare in tante sottocartelle e fare una lista di tutti i file da elaborare). Usare le collection è senz'altro più conveniente:
List<File> unioneFile = new ArrayList<File>();
// Ora puoi caricare i risultati dei listFiles() sulla lista
// Puopi fare tanti addAll() secondo le tue logiche, tutti i file
// nel array passato in parametro vengono aggiunti alla lista
unioneFile.addAll(Arrays.asList(f1.listFiles()));
// Per percorrere la lista
for (Iterator i = unioneFile.iterator(); i.hasNext(); ) {
File file = i.next();
// Qui puoi fare quello che devi fare con ognuno dei file della lista
System.out.println(file.getName());
}
// Oppure converti la lista in un array:
File[] risultato = unioneFile.toArray(new File[1]);
N.B.: In questo caso ho usato i generics per la lista, quindi serve Java 1.5 o superiore.
Così vengono ignorati i duplicati?
banryu79
23-01-2009, 16:05
Così vengono ignorati i duplicati?
Naturalmente no: stiamo usando una List e non un Set.
astorcas
23-01-2009, 16:58
Naturalmente no: stiamo usando una List e non un Set.
Ehm si scusa credevo si riferisse all'unione fra insiemi e volevo fare il sarcastico... invece ho fatto l'idiota :fagiano:
banryu79
23-01-2009, 17:04
Ehm si scusa credevo si riferisse all'unione fra insiemi e volevo fare il sarcastico... invece ho fatto l'idiota :fagiano:
Non l'ho mica capita :D
astorcas
23-01-2009, 17:12
Non l'ho mica capita :D
Vorrei avere una nuova lista di File (File unionFile[] che sia l'unione tra le due....
Credevo lui volesse questa (http://it.wikipedia.org/wiki/Unione_(insiemistica)) unione.... insomma disgiunta, vabbè lascia stare è venerdi sera!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.