我对Apache Ant中的dirset type有两个问题。
答案 0 :(得分:3)
<强> [编辑] 强>
如果你看一下dirset source看起来它使用了java File.list()
,其documentation表示没有gauranteed订单。 所以不,你绝对不能指望。但是,在回来之前,请致电Arrays.sort(files);
见第1572行。
根据保留顺序我不能说,我担心没有保证,但通常只是保留文件系统顺序。
关于测试,我认为你想要,如果这个文件存在或者类似的东西,使用ant contrib进行操作,
<for param="directory">
<dirset dir="dirIneedtoexist">
</dirset>
<sequential>
<!-- Stuff to do if it exists. -->
</sequential>
</for>
如果dirset中没有任何内容,如果不做任何事情。
答案 1 :(得分:1)
关于dirset的Ant文档中没有太多内容。
如果您使用patternset
,则无法保证订单。
如果使用include
,列出单个目录而不是模式,dirset
应该保留顺序。我确实会对此进行测试。
编辑添加:如果我错了,您可以编写自己的Ant custom task来保留包含目录的顺序。
答案 2 :(得分:1)
答案 3 :(得分:0)
不,它不会保留秩序。
dirset的内容基于其parent class通过DirectoryScanner
公开的内容。该扫描程序遍历文件系统,不按任何特定顺序执行。
它还使用File.list
,它是秩序非确定性的来源:
无法保证结果数组中的名称字符串将以任何特定顺序出现;特别是,它们不会保证按字母顺序出现。