无法在Spring Batch中的afterStep中清除文件夹

丁扎克

我有一份工作,负责处理所有文件并将其从一个目录复制到另一个目录。在执行此步骤之后,我想删除第一个目录,但是在尝试删除最后一个已处理(已复制)的文件时出现错误,结果是一个文件夹中只有一个无法删除的文件,而这个文件恰好是最后一个文件已处理的
My StepExecutionListener如下所示:

public class CleanUpListener implements StepExecutionListener {

private static final Logger logger = LoggerFactory.getLogger(CleanUpListener.class);

private String folderToBeDeleted;

@Override
public ExitStatus afterStep(StepExecution arg0) {
    try {
        logger.info("Deleting folder: " + folderToBeDeleted + " ...");
        File file = new File(folderToBeDeleted);
        logger.info("folder contains: " + file.listFiles().length);
        FileUtils.deleteDirectory(file);
        logger.info("Deleted folder: " + folderToBeDeleted);
    } catch (IOException e) {
        logger.error("Failed to delete folder: " + folderToBeDeleted + " with exception: " + e.toString());
    }
    return null;
}

@Override
public void beforeStep(StepExecution arg0) {
    // TODO Auto-generated method stub

}

public String getFolderToBeDeleted() {
    return folderToBeDeleted;
}

public void setFolderToBeDeleted(String folderToBeDeleted) {
    this.folderToBeDeleted = folderToBeDeleted;
}

}

产生结果:

11/03/2014 13:53:56.804 [http-bio-8080-exec-2] [] INFO                 CleanUpListener - Line (29) Deleting folder: C:/Myfolder ...
11/03/2014 13:53:56.806 [http-bio-8080-exec-2] [] INFO                 CleanUpListener - Line (31) folder contains: 14
11/03/2014 13:53:56.826 [http-bio-8080-exec-2] [] ERROR                CleanUpListener - Line (35) Failed to delete folder: C:/Myfolder with exception: java.io.IOException: Unable to delete file: C:/Myfolder/14.xml

除最后一个已处理的文件(14.xml)外,所有文件均被删除。

更新:该步骤的读者:

<bean id="modelReader"
        class="org.springframework.batch.item.file.MultiResourceItemReader"
        scope="step">
        <property name="resources" value="file:${step3.reader.resource}/*.xml"></property>
        <property name="delegate" ref="staxPatentReader"></property>
        <property name="strict" value="true"></property>
    </bean>

    <bean id="staxPatentReader" class="org.springframework.batch.item.xml.StaxEventItemReader">
        <property name="fragmentRootElementName" value="Root" />
        <property name="unmarshaller" ref="modelMarshaller" />
    </bean>

    <bean id="modelMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
        <property name="classesToBeBound">
            <list>
                <value>com.sample.MyModel</value>
            </list>
        </property>
    </bean>
卢卡·巴索·里奇(Luca Basso Ricci)

对于此类步骤,请使用自定义Tasklet实现。

class DeleteFilesTasklet implements Tasklet {
  execute(StepContribution, ChunkContext) throws Exception {
    // do deletion and return the right value
  }
}

在你的job.xml中

<job>// previous steps
  <step id="deleteFiles">
    <tasklet ref="deleteFiles" />
  </step>
  <bean class="DeleteFilesTasklet" id="deleteFiles" />
</job>

这样,您可以确保在上一步中已关闭所有文件(和其他资源)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法在Spring Batch中的afterStep中清除文件夹

来自分类Dev

无法从Spring Boot中的/ static文件夹读取资源

来自分类Dev

如何使用spring-batch从文件夹中连续读取文件?

来自分类Dev

无法在Unix中删除文件夹

来自分类Dev

无法从Spring Boot中的/ static文件夹中读取资源

来自分类Dev

Spring Integration SFTP无法将文件移动到远程文件夹中的已处理

来自分类Dev

无法创建文件夹并将文件放在此文件夹中

来自分类Dev

无法在根目录中包含文件夹中的内容

来自分类Dev

Apache无法访问主文件夹中的文件

来自分类Dev

无法访问资产子文件夹中的文件

来自分类Dev

无法使用remove()路径删除文件夹中的文件

来自分类Dev

无法使用remove()路径删除文件夹中的文件

来自分类Dev

无法检索文件夹中pdf文件的大小

来自分类Dev

无法从文件夹VBA中获取xls文件

来自分类Dev

无法访问资产子文件夹中的文件

来自分类Dev

Total Commander无法在OneDrive文件夹中打开文件

来自分类Dev

无法从文件和文件夹列表中同步

来自分类Dev

无法从终端文件夹中删除文件

来自分类Dev

无法删除/复制/粘贴Gnome中的文件或文件夹

来自分类Dev

无法访问ubuntu中的文件或文件夹

来自分类Dev

Laravel 无法上传存储文件夹中的文件

来自分类Dev

无法读取函数文件夹中的文件

来自分类Dev

无法在overGrive中更改文件夹位置-无法同步

来自分类Dev

Spring WebServer如何共享文件夹中的文件

来自分类Dev

Ionic Zip无法压缩文件夹C#中的文件夹

来自分类Dev

为什么Docker容器无法在已挂载的文件夹中创建文件夹

来自分类Dev

无法在Mac上的Apache的Web根文件夹中创建或复制文件夹

来自分类Dev

无法CD到文件夹路径中带有空格的文件夹

来自分类Dev

python无法将文件夹保存在一个文件夹中

Related 相关文章

  1. 1

    无法在Spring Batch中的afterStep中清除文件夹

  2. 2

    无法从Spring Boot中的/ static文件夹读取资源

  3. 3

    如何使用spring-batch从文件夹中连续读取文件?

  4. 4

    无法在Unix中删除文件夹

  5. 5

    无法从Spring Boot中的/ static文件夹中读取资源

  6. 6

    Spring Integration SFTP无法将文件移动到远程文件夹中的已处理

  7. 7

    无法创建文件夹并将文件放在此文件夹中

  8. 8

    无法在根目录中包含文件夹中的内容

  9. 9

    Apache无法访问主文件夹中的文件

  10. 10

    无法访问资产子文件夹中的文件

  11. 11

    无法使用remove()路径删除文件夹中的文件

  12. 12

    无法使用remove()路径删除文件夹中的文件

  13. 13

    无法检索文件夹中pdf文件的大小

  14. 14

    无法从文件夹VBA中获取xls文件

  15. 15

    无法访问资产子文件夹中的文件

  16. 16

    Total Commander无法在OneDrive文件夹中打开文件

  17. 17

    无法从文件和文件夹列表中同步

  18. 18

    无法从终端文件夹中删除文件

  19. 19

    无法删除/复制/粘贴Gnome中的文件或文件夹

  20. 20

    无法访问ubuntu中的文件或文件夹

  21. 21

    Laravel 无法上传存储文件夹中的文件

  22. 22

    无法读取函数文件夹中的文件

  23. 23

    无法在overGrive中更改文件夹位置-无法同步

  24. 24

    Spring WebServer如何共享文件夹中的文件

  25. 25

    Ionic Zip无法压缩文件夹C#中的文件夹

  26. 26

    为什么Docker容器无法在已挂载的文件夹中创建文件夹

  27. 27

    无法在Mac上的Apache的Web根文件夹中创建或复制文件夹

  28. 28

    无法CD到文件夹路径中带有空格的文件夹

  29. 29

    python无法将文件夹保存在一个文件夹中

热门标签

归档