我正在使用git命令行输出在我的项目的gradle构建中实现diff包生成任务。目前我有一个方法可以从git diff --name-only
给我一个已更改文件的列表。我想要做的是在新目录中创建一个与每个文件的路径匹配的目录结构。例如:输入字符串repo/dir/file.java
将在输出目录中创建(如果尚未创建),并在其中创建目录head/repo/dir
,其中包含当前file.java
和prev/repo/dir
与之前的file.java
1}}。
我目前的计划是在正斜杠上拆分字符串repo/dir/file.java
,并创建目录,直到拆分结果的最后一个元素,然后在那里写入文件。但是我在gradle中得到的任何东西都不错或干净。我想知道是否有更好的方法从类似的字符串创建目录。
答案 0 :(得分:3)
我目前的计划是在正斜杠上拆分字符串
repo/dir/file.java
,并创建目录,直到拆分结果的最后一个元素
您可以尝试使用File.mkdirs()
:
File newDirectoryStructureParent = new File('some/path/to/parent/dir')
def s = 'repo/dir/file.java'
def newContainer = new File(s, newDirectoryStructureParent).getParent()
newContainer.mkdirs()
答案 1 :(得分:-1)
大家 在我的这部分代码中,您可以解决路径而不是文件!
首先你可以定义路径,第二个需要检查路径是否存在,如果不存在 mkdirs 可以使它;)
当您不知道该路径是否存在时它的帮助 /
File fullPath = new File('/tmp/Test1')
if (!fullPath.exists())
fullPath.mkdirs()