2015-09-02 11 views
7

Ho una matrice di nomi di file String e voglio convertirli nell'array File. Sto vagando se esiste un modo più elegante di farlo piuttosto che questo.Java 8, Converti array di nomi file nell'array di file

String[] names = {file1, file2, file3}; 
File[] files = new String[names.length]; 
for (int i = 0; i < names.length; i++) { 
    files[i] = new File(names[i]); 
} 

EDIT Grazie per notare nei commenti. Sto usando Java 8

+5

Si sta utilizzando java 8? – wjans

+1

Java-8 simile: http://stackoverflow.com/questions/23057549/lambda-expression-to-convert-array-list-of-string-to-array-list-of-integers – BackSlash

+1

Nota a margine: utilizzare Percorso dall'API file NIO.2 anziché dagli oggetti File. – Puce

risposta

6

In Java 7 o meno, usando JDK semplice, non c'è. A partire da Java 8, è possibile utilizzare gli stream per questo:

String[] names = {file1, file2, file3}; 
File[] files = Arrays.stream(names) 
    .map(s -> new File(s)) 
    .toArray(size -> new File[names.length]); 
+2

Ancora, il codice dell'OP è più leggibile per me: - | +1 –

+3

's -> new File (s)' può essere semplificato in 'File :: new'. Personalmente, preferisco i riferimenti al metodo. – bcsb1001

+0

@ bcsb1001 attenzione quando si utilizza tale approccio, specialmente per i metodi sovraccaricati. Dopo aver letto e affrontato alcuni problemi usando 'Class :: method' quando * method * è sovraccarico (anche i costruttori di classi), preferisco usare la modalità descrittiva. –