Ant:创建包含文件的目录(如果它尚不存在)?

Ben*_*nny 15 ant

基本上,我得到一个像"C:\ test\subfolder1\subfolder2\subfolder3\myfile.txt"这样的路径,但是子文件夹1-3可能已经不存在,这意味着如果我尝试的话我会得到一个例外写入文件.

有没有办法创建目标文件所在的目录结构,或者通过使用某些任务在输出到文件然后删除文件时创建结构,或者通过解析路径的目录部分并使用mkdir任务第一?

Dan*_*yer 32

当您使用<mkdir>任务时,Ant将为您创建完整的目录树.所以你只需要使用该<dirname>任务从文件名中获取目录名称.

 <dirname property="directoryProperty" file="${filePathProperty}"/>
 <mkdir dir="${directoryProperty}" />
Run Code Online (Sandbox Code Playgroud)

第一行提取文件路径的目录部分并将其存储在directoryProperty属性中.第二行创建目录(以及任何不存在的父目录).


Wil*_*ung 5

这个任务运行良好

<mkdir dir="${file}/../"/>
Run Code Online (Sandbox Code Playgroud)

有时我们可以有一个替代选择,使用触摸任务

<touch file="${file}" mkdirs="true" verbose="true"/>
Run Code Online (Sandbox Code Playgroud)

此任务应该完成这项工作,但会产生副作用,以创建零大小的文件

  • @Jayan 我不同意,它提供了不同的视角,这正是我想要的。如果不是他的回答,我将需要提出一个新问题。 (5认同)