将文件列表[]转换为文件[]

时间:2016-09-21 07:43:22

标签: java file

我有这样的文件列表[。]。

 List<File[]> fileList = new ArrayList<File[]>();

我需要将其转换为File[]这样的File[] finalFiles

我们是否可以将Files[]数组转换为单File[]

3 个答案:

答案 0 :(得分:4)

使用Stream API,您可以:

File[] finalFiles = fileList.stream().flatMap(Arrays::stream).toArray(File[]::new);

这会创建一个流,其中每个元素都是一个文件数组(Stream<File[]>),平面映射每个文件数组(所以我们有一个Stream<File>)并创建一个包含所有元素的新数组。

答案 1 :(得分:2)

Java 7解决方案:

        List<File[]> fileList = new ArrayList<File[]>();
        int count = 0;
        for (int i = 0; i < fileList.size(); i++){
            count += fileList.get(i).length;
        }

        File[] finalFiles = new File[count];
        int pointer = 0;
        for (int i = 0; i < fileList.size(); i++){
            System.arraycopy(fileList.get(i), 0, finalFiles, pointer, fileList.get(i).length);
            pointer += fileList.get(i).length;
        }

答案 2 :(得分:0)

这很完美:

File[] finalFiles = (File[]) fileList.toArray(new File[fileList.size()]);