如何使用 Ant 将多个目录中的所有文件复制到一个目录中

How to copy all files from multiple directories into a single directory using Ant

我的文件夹结构类似于

ant/
    test1/
        images/
            1.png ...
    test2/
        images/
            121.png ...
    test3/
        images/
            173.gif ...

我想从不同的不同图片文件夹中读取所有图片,并将它们放入ant文件夹下的一个图片文件夹中。

这段代码是我写的

<project name = "java-ant project" default = "copy-file">  
    <target name="copy-file">  
        <copy todir="D:/ant/images">
            <fileset includes="**/images/" dir="D:/ant/"/></copy>  
    </target>  
</project> 

这会成功复制到图像文件夹中,但会保留源文件夹结构。

喜欢:

ant/
    images/
        test1/
            images/
                1.jpg ...
        test2/
            images/
                121.jpg ...

我想要的输出是:

ant/ 
    images/
        1.jpg
        121.png
        173.gif
        ...

你可以这样使用:

<property name="src.dir" value="D:/ant/"/>
<property name="dest.dir" value="D:/ant/images"/>

<copy todir="${dest.dir}">
  <fileset dir="${src.dir}" includes="**/images/*">
    <type type="file"/>
  </fileset>
  <mapper type="flatten" />
</copy>

flatten mapper是关键部分

type="file" 元素确保只复制文件。如果没有它,您可能还会看到复制的(空)目录。