Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将文件[]列表转换为文件[]_Java_File - Fatal编程技术网

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

Java 将文件[]列表转换为文件[],java,file,Java,File,我有这样的文件[]列表 List<File[]> fileList = new ArrayList<File[]>(); 我需要把它转换成一个文件[]类似于这个文件[]最终文件 是否有任何方法可以将文件数组[]转换为单个文件[]Java 7解决方案: List<File[]> fileList = new ArrayList<File[]>(); int count = 0; for (int i

我有这样的文件[]列表

 List<File[]> fileList = new ArrayList<File[]>();
我需要把它转换成一个文件[]类似于这个文件[]最终文件

是否有任何方法可以将文件数组[]转换为单个文件[]

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;
        }
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;
        }

使用流API,您可以:

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

这将创建一个流,其中每个元素都是一个文件数组流,平面映射每个文件数组,这样我们就有了一个流,并创建了一个所有元素的新数组。

使用流API,您可以:

File[] finalFiles = fileList.stream().flatMap(Arrays::stream).toArray(File[]::new);
这将创建一个流,其中每个元素都是一个文件数组流,平面映射每个文件数组,这样我们就有了一个流,并创建了一个包含所有元素的新数组。

这非常有效:

File[] finalFiles = (File[]) fileList.toArray(new File[fileList.size()]);
这非常有效:

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

这里已经回答了这个问题:这里已经回答了这个问题: