Spring batch 一个spring批处理作业准备的文件不能被另一个批处理作业访问以进行删除

Spring batch 一个spring批处理作业准备的文件不能被另一个批处理作业访问以进行删除,spring-batch,Spring Batch,我有一个要求,即我必须使用一个作业准备一个文件,而每天运行一次的另一个作业将文件发送到外部系统并从该位置删除/或移动。当此作业尝试删除/或移动文件时,它无法访问该文件 创建文件时,我尝试将writable设置为true。在不同时间运行作业(一次运行一个作业)。还尝试将“删除”作为步骤添加到同一作业中。什么都没用。 我正在使用file.delete()。还尝试了文件。deleteIfExists() 我怀疑第一个作业没有分配正确的权限,但不知道如何在spring batch中设置权限这些作业是由同

我有一个要求,即我必须使用一个作业准备一个文件,而每天运行一次的另一个作业将文件发送到外部系统并从该位置删除/或移动。当此作业尝试删除/或移动文件时,它无法访问该文件

创建文件时,我尝试将writable设置为true。在不同时间运行作业(一次运行一个作业)。还尝试将“删除”作为步骤添加到同一作业中。什么都没用。 我正在使用
file.delete()
。还尝试了
文件。deleteIfExists()


我怀疑第一个作业没有分配正确的权限,但不知道如何在spring batch中设置权限这些作业是由同一用户运行的吗?i、 e.相同的用户和权限

还有,实际的错误消息是什么?它说权限被拒绝了吗?如果是这样,则可能是操作系统限制,而不是Spring批处理/Java限制


一个更简单的解决方案是,只需在第一个作业中添加一个步骤,以发送作业的一部分文件,并删除仅传输文件的作业。

回答我自己的问题嗨,Brian,这实际上是一个“权限被拒绝”的问题。我使用Files.deleteIfExists检查实际错误。在所有处理之后,流中的最后一个ItemWriter没有释放文件资源。我必须编写重写的write(),它将手动关闭编写器。虽然这对我来说不是一个选择,但我尝试在第一份工作中添加一个步骤,但writer仍然掌握着资源。