Groovy 如何检查包含文件的目录是否存在?

Groovy 如何检查包含文件的目录是否存在?,groovy,Groovy,我正在使用groovy创建一个类似“./a/B/file.txt”的文件。为此,我创建了一个服务,并将要创建的文件路径传递为参数。然后,作业使用此服务。作业将执行在指定目录中创建文件的逻辑。我已经手动创建了“A”目录 如何通过代码自动创建“B”目录和“A”目录中的file.txt文件 在创建文件之前,我还需要检查目录“B”和“A”是否存在。编辑:从Java8开始,您最好使用类: File f = new File("/A/B/"); f.mkdirs(); 我不知道这是否最终解决了您的问题,但

我正在使用
groovy
创建一个类似
“./a/B/file.txt”
的文件。为此,我创建了一个
服务
,并将要创建的
文件路径
传递为
参数
。然后,
作业
使用此服务。作业将执行在指定目录中创建文件的逻辑。我已经手动创建了“A”目录

如何通过代码自动创建“B”目录和“A”目录中的file.txt文件


在创建文件之前,我还需要检查目录“B”和“A”是否存在。

编辑:从Java8开始,您最好使用类:

File f = new File("/A/B/");
f.mkdirs();
我不知道这是否最终解决了您的问题,但是class
File
有一个方法可以完全创建文件指定的路径

File f = new File("/A/B/");
f.mkdirs();

要检查文件夹是否存在,只需使用
exists()
方法:

// Create a File object representing the folder 'A/B'
def folder = new File( 'A/B' )

// If it doesn't exist
if( !folder.exists() ) {
  // Create all folders up-to and including B
  folder.mkdirs()
}

// Then, write to file.txt inside B
new File( folder, 'file.txt' ).withWriterAppend { w ->
  w << "Some text\n"
}
//创建一个表示文件夹“a/B”的文件对象
def文件夹=新文件('A/B')
//如果它不存在的话
如果(!folder.exists()){
//创建B之前(含B)的所有文件夹
folder.mkdirs()
}
//然后,写入B中的file.txt
新文件(文件夹“File.txt”)。withWriterAppend{w->

w谢谢。但是我如何在创建目录的同时创建file.txt呢?我现在明白了,它应该是f.mkdrs(),因为我正在创建多个目录。谢谢。请注意,这很容易受到竞争条件的影响,因为另一个进程可以在
.exists()
.mkdirs()之间创建目录
调用。我不知道如何在Groovy中做到这一点,但通常正确的方法是创建目录并忽略已经存在的错误。学究角:不建议“忽略”错误,句号;更确切地说,是为了适当地处理它们。即使这意味着一个简单的日志可以识别出其他线程已经击败了您的线程。