【问题解决】Jenkins使用File的exists()方法判断文件存在,一直提示不存在的问题
小剧场
最近为了给项目组提供一个能给Java程序替换前端、后端的增量的流水线,继续写上了声明式流水线。
替换增量是根据JSON配置文件去增量目录里去取再替换到对应位置的,替换前需要判断增量文件是否存在。
判断文件是否存在?作为一个老Javaer那还不简单,随手就敲上了Groovy语法的代码:
def filePath = "/path/to/path/myFile"
if(new File(filePath).exists()){
println '增量存在'
}else{
println '增量不存在'
}
然后在本地环境的Jenkins(单主节点)运行一直没问题,然后脚本代码提交到后,再使用公司的Jenkins去运行代码。
发现无论文件是否存在,它都会提示“增量不存在”!
我还尝试在if判断前列出文件,代码变成了:
def filePath = "/path/to/path/myFile"
sh "ls -l ${filePath}"
if(new File(filePath).exists()){
println '增量存在'
}else{
println '增量不存在'
}
然后更神奇的现象出现了:ls -l的确列出了文件,然后输出”增量不存在“!
问问deepseek

解决
通过AI工具的分析,发现了个隐藏的知识:new File()会在Jenkins主节点执行!要想判断文件存在,使用fileExists方法更靠谱!
我这边正好不涉及agent节点非Linux的情况,问题一下子就确认了。好家伙,困扰我1个小时的问题竟然就这么轻松的解决了。
代码改写如下:
def filePath = "/path/to/path/myFile"
if(fileExists(filePath)){
println '增量存在'
}else{
println '增量不存在'
}
AI工具的的确确能提升开发效率,真不错!
【问题解决】Jenkins使用File的exists()方法判断文件存在,一直提示不存在的问题的更多相关文章
- 【转载】C#中List集合使用Exists方法判断是否存在符合条件的元素对象
在C#的List集合操作中,有时候需要根据条件判断List集合中是否存在符合条件的元素对象,此时就可以使用List集合的扩展方法Exists方法来实现,Exists方法的签名为bool Exists( ...
- java中File的delete()方法删除文件失败的原因
java中File的delete()方法删除文件失败的原因 学习了:http://hujinfan.iteye.com/blog/1266387 的确是忘记关闭了: 引用原文膜拜一下: 一般来说 ja ...
- C#取得控制台应用程序的根目录方法 判断文件夹是否存在,不存在就创建
取得控制台应用程序的根目录方法1:Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径2:AppDomain.CurrentDomain.BaseDirect ...
- 转!!java中File的delete()方法删除文件失败的原因
一般来说 java file.delete失败 有以下几个原因 1.看看是否被别的进程引用,手工删除试试(删除不了就是被别的进程占用)2.file是文件夹 并且不为空,有别的文件夹或文件, 3.极有可 ...
- Python判断文件是否存在的三种方法
通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先判断文件是否存在. 这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块.Try ...
- Python判断文件是否存在的三种方法【转】
转:http://www.cnblogs.com/jhao/p/7243043.html 通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先 ...
- Python 判断文件是否存在的三种方法
通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先判断文件是否存在. 这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块.Try ...
- Java_判断文件是否写入完成
/** * 等待文件(非目录)读写完毕,费时的操作,不要放在主线程 * * @param file 文件 */ private void waitForWirtenCompleted(File fil ...
- C#中判断文件夹中存在某个txt文本
strFileName="D:\\strarray.txt"; if (File.Exists(strFileName))//判断文件是否存在 { }
- Winform下判断文件和文件夹是否存在
//选择文件夹 FolderBrowserDialog dia = new FolderBrowserDialog(); if (dia.ShowDialog() == System.Windows. ...
随机推荐
- 把 Windows 装进 Docker 容器里
本篇文章聊聊如何在 Docker 里运行 Windows 操作系统, Windows in Docker Container(WinD). 写在前面 我日常使用 macOS 和 Ubuntu 来学习和 ...
- TypeNameExtractor could not be found
TypeNameExtractor could not be foundException 一.注意: 如果项目中使用了 knif4j或swagger (knif4j内核中就使用了swagger) 项 ...
- Qt/C++开发经验小技巧296-300
使用QDir::setCurrent设置当前目录后,会影响程序中的所有相对目录的执行,导致可能的意外发生,一般相对目录都默认是可执行文件所在目录,所以如果程序中为了特殊处理临时调用了QDir::set ...
- Qt编写物联网管理平台38-多种数据库支持
一.前言 本系统设计之初就要求支持多种不同的数据库,比如sqlite.mysql.postgres.sqlserver等,甚至包括国产数据库比如人大金仓kingbase等,(由于现在国产化的大力推进, ...
- [转]Ceres求解优化问题
1. 简介Ceres Solver是专门用于求解非线性最小二乘问题的C++开源库,研究SLAM方向不过滤波和优化两个技术路线,因此常用Ceres库解决实际项目中的优化问题,当然还有g2o同样可用,但就 ...
- 使用 Visual Studio Code 进行调试
现在是时候实践你新获得的调试知识了. 我们刚好有一个完美的机会. 在我们的 Tailwind Traders 应用中,我们正在开发一项新功能:允许以多种货币显示产品的价格. 一位同事为这一目的编写了一 ...
- Java中使用Callable和FutureTask创建多线程的基本用法
我们先定义一个Callable任务MyCallableTask: 步骤1:创建Callable实现类,并实现call()接口 package cn.cetc;//包名可自定义 import java. ...
- [转]java中带图片按钮的大小设置
在java部分需要用到图形界面编程的项目中,经常会使用图片设置对按钮进行美化,但是使用时会出现一个很麻烦的问题,那就是按钮的大小默认按照图片的大小来显示,这大大降低了界面的美观程度: 按照方法: JB ...
- 基于开源IM即时通讯框架MobileIMSDK:RainbowChat v11.5版已发布
关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级.高度提炼,一套API优雅支持UDP .TCP .WebSocket 三种协议,支持iOS.A ...
- 融云技术分享:全面揭秘亿级IM消息的可靠投递机制
本文由融云技术团队原创分享,原题"IM 消息同步机制全面解析",为使文章更好理解,对内容进行了重新归纳和细节修订. 1.内容概述 即时通讯(IM)系统最基础.最重要的是消息的及时性 ...