我想在生成之前测试文件是否不存在。
是否可以使用像isFileExist这样的东西?
[template public generate(conf : Configuration) ? (isFileExist('/path/to/file.txt'))]
[file ('/path/to/file.txt', false, 'UTF-8')]
file content
[/file]
[/template]
提前致谢。
答案 0 :(得分:1)
我遇到了同样的问题,我终于通过在外部Java类中“外化”此函数来实现它。这样,您可以定义一个方法,例如:
public boolean existsFile(String filepath) {
Path p = Paths.get(filepath);
p.normalize();
File f = new File(filepath);
return f.exists();
}
然后通过定义如下的查询从Acceleo中调用它:
[query public existsFile(filePath : String):
Boolean = invoke('utils.AcceleoUtils', 'existsFile(java.lang.String)', Sequence{filePath})
/]
这样,在您的示例中,您可以执行
[template public generate(conf : Configuration)]
[if existsFile('/path/to/file.txt')/]
[file ('/path/to/file.txt', false, 'UTF-8')]
file content
[/file]
[/if]
[/template]
pd:小心路径,因为'file'标签默认输出目标路径中的文件,所以万一你不提供绝对路径,你需要在调用时或在existsFile函数。