蚂蚁:关于套曲的两个问题



关于ApacheAnt中的dirset类型,我有两个问题。

  • 目录集真的是一个没有顺序保证的集合吗?还是它保留了输入顺序?我想使用ant:contrib来迭代一组目录和顺序,所以如果ant的目录集不保留插入顺序,我有什么替代方案
  • 如何测试某个目录是否包含在目录集中

[编辑]

如果您查看目录集源代码,它看起来像是使用了javaFile.list(),其文档声明没有gauranteed顺序所以不,你绝对不能指望这一点但是,在返回之前,它调用Arrays.sort(files);参见第1572行。


根据我不能说的保存顺序,我会冒险说没有保证,但通常只是碰巧保存文件系统顺序

至于测试,我想你想,如果这个文件存在或类似的东西存在,就采取行动,使用ant contrib,

<for param="directory">
<dirset dir="dirIneedtoexist">
</dirset>
<sequential>
     <!-- Stuff to do if it exists. -->          
</sequential>
</for>

如果目录中什么都没有,If什么都不做。

Ant文档中没有太多关于dirset的内容。

如果您使用patternset,则无法保证订单。

如果使用include,列出单独的目录而不是模式,dirset应该保留顺序。当然,我会测试一下。

编辑后添加:如果我错了,您可以编写自己的Ant自定义任务来保留include目录的顺序。

根据本页

dirset将目录集添加到隐式生成路径。请注意,目录将不按特定顺序添加到构建路径中,因此如果顺序很重要,则应使用文件列表!

下面是关于如何使用FileList 的链接

否,它不保留顺序。

目录集的内容基于其父类通过DirectoryScanner公开的内容。该扫描仪遍历文件系统,并且不会以任何特定的顺序执行。

它还使用了File.list,这是订单不确定性的来源:

无法保证结果数组中的名称字符串会以任何特定顺序出现;它们并不能特别保证按字母顺序出现。

相关内容

  • 没有找到相关文章

最新更新