mnu*_*sir 1 java-stream jenkins-groovy jenkins-pipeline
我正在准备使用Groovy语言的Jenkins管道脚本。我想将所有文件和文件夹移动到另一个位置。由于Groovy支持Java,因此我在下面的Java代码中执行了该操作。
管道{代理任何
stages{
stage('Organise Files'){
steps{
script{
File sourceFolder = new File("C:\\My-Source");
File destinationFolder = new File("C:\\My-Destination");
File[] listOfFiles = sourceFolder.listFiles();
echo "Files Total: " + listOfFiles.length;
for (File file : listOfFiles) {
if (file.isFile()) {
echo file.getName()
Files.copy(Paths.get(file.path), Paths.get("C:\\My-Destination"));
}
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
此代码引发以下异常:
groovy.lang.MissingPropertyException:无此类属性:类文件:WorkflowScript
我也尝试了下面的代码,但也不起作用。
FileUtils.copyFile(file.path, "C:\\My-Destination");
Run Code Online (Sandbox Code Playgroud)
最后,我确实尝试使用java I / O Stream执行操作,并且代码如下:
def srcStream = new File("C:\\My-Source\\**\\*").newDataInputStream()
def dstStream = new File("C:\\My-Destination").newDataOutputStream()
dstStream << srcStream
srcStream.close()
dstStream.close()
Run Code Online (Sandbox Code Playgroud)
但它也不起作用,并引发以下异常:
java.io.FileNotFoundException:C:\ My-Source(访问被拒绝)
谁能建议我解决问题的方法,也请让我知道复制或移动文件后如何从源位置删除文件?还有一件事,在复制期间我可以使用通配符过滤一些文件夹和文件吗?也请让我知道。
不要使用纯Java / Groovy执行这些I / O功能。即使您运行了该程序,它也将始终在主服务器而不是构建代理程序上执行。为此,也可以使用管道步骤,例如:
bat("xcopy C:\\My-Source C:\\My-Destination /O /X /E /H /K")
Run Code Online (Sandbox Code Playgroud)
或使用文件操作插件
fileOperations([fileCopyOperation(
excludes: '',
flattenFiles: false,
includes: 'C:\\My-Source\\**',
targetLocation: "C:\\My-Destination"
)]).
Run Code Online (Sandbox Code Playgroud)
我以为我在示例中没有针对Windows路径使用非常正确的语法,但是希望您能理解。
| 归档时间: |
|
| 查看次数: |
14145 次 |
| 最近记录: |