Mule - 执行一些处理后删除文件

时间:2016-03-10 05:02:14

标签: mule mule-component

我需要一些帮助来删除Mule应用程序中的文件。这是我的用例:

  1. 我使用文件入站端点获取文件,获取数据并在对数据进行一些验证后将数据上传到数据库。

  2. 我想在上传到数据库成功后删除该文件。我尝试使用java.io.File.delete(如此stackoverflow帖子中所示),但它无法正常工作。

  3. Mule - Delete files with Files Connector

    我正在使用Mule 3.3.2并在我的本地计算机上运行服务器。 (当我使用简单的Java程序删除时,我能够删除该文件。)

    你能帮忙吗?

    ---- ---- UPDATE 这就是我在用于删除文件的Java组件的OnCall()方法中所拥有的。 isDeleted返回false。

    @Override
    public Object onCall(MuleEventContext eventContext) throws Exception {
    
      String fileName = (String) eventContext.getMessage().getProperty(
                "originalFilename");
    
        filePath = "C:\\REP-UNZIP\\";
        File file = new File(filePath + fileName);
    
        boolean isDeleted = false;
        isDeleted = java.nio.file.Files.deleteIfExists(file.toPath());
        if (file.isFile()) {
            isDeleted = file.delete();
        }
    

    // isDeleted = FileUtils.deleteQuietly(file);         LOG.info(“isDeleted =”+ isDeleted);

        return Boolean.valueOf(isDeleted);
    }
    

1 个答案:

答案 0 :(得分:0)

只能使用自定义组件在流程中间访问带文件处理器的文件。 对于您的用例,您可以使用requester module

这将允许您在流程中间调用文件入站组件,并且可以将文件处理器配置为在读取后删除文件。 开销是文件将被删除后再次放入内存中。

另一种方法是创建一个简单的java类来为你执行删除操作,它只需几行就可以在流程中的任何地方使用它而不会降低性能。