如何在Groovy中打印脚本所在目录的上一级路径?
在Groovy中获取脚本所在目录的上一级路径
问题分析
你当前的代码存在几个关键问题:
new File("/../")是基于当前工作目录的上级路径,并非脚本自身所在目录的上级,结果会和预期不符logger.debug语句存在括号不匹配的语法错误- 没有获取脚本自身的文件位置,无法定位到目标路径
正确实现方式
要获取脚本所在目录的上一级路径,核心是先定位到脚本自身的文件对象,再逐层向上获取父目录。
完整示例代码
// 获取当前脚本的文件对象 def scriptFile = new File(this.class.protectionDomain.codeSource.location.path) // 获取脚本所在的直接目录 def scriptDir = scriptFile.parentFile // 获取该目录的上一级目录 def targetDir = scriptDir.parentFile // 打印结果(若使用logger需确保logger已初始化) println "目标路径:${targetDir.canonicalPath}" // logger.debug(String.format("[%s]", targetDir.canonicalPath))
简洁链式写法
如果不需要分步处理,也可以用链式调用简化代码:
def targetDir = new File(this.class.protectionDomain.codeSource.location.path).parentFile.parentFile println targetDir.canonicalPath
效果验证
当你的Groovy文件位于abc/def/ghi/dummy.groovy时,运行上述脚本会输出abc/def对应的系统标准格式路径(canonicalPath会返回绝对路径)。
内容的提问来源于stack exchange,提问作者Liu Xu
相关产品推荐
相关产品推荐

