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

Mule-执行某些处理后删除文件,mule,mule-component,Mule,Mule Component,我需要一些帮助来删除Mule应用程序中的文件。以下是我的用例: 我使用文件入站端点获取一个文件,获取数据并在对数据进行一些验证后将数据上载到数据库 我想在上传到数据库成功后删除该文件。我尝试使用java.io.File.delete(正如本文stackoverflow文章中所建议的那样),但它不起作用 我正在使用Mule 3.3.2并在本地机器上运行服务器。(我可以使用简单的Java程序删除文件。) 你能帮忙吗 ----更新---- 这就是我用来删除文件的Java组件的OnCall()方法。i

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

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

  • 我想在上传到数据库成功后删除该文件。我尝试使用java.io.File.delete(正如本文stackoverflow文章中所建议的那样),但它不起作用

  • 我正在使用Mule 3.3.2并在本地机器上运行服务器。(我可以使用简单的Java程序删除文件。)

    你能帮忙吗

    ----更新---- 这就是我用来删除文件的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.deletequite(文件); LOG.info(“isDeleted=“+isDeleted”)


    <>使用流组件访问文件中间的文件只能使用自定义组件。 对于您的用例,您可以使用

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


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

    您如何读取文件,将其移动到备份目录,如果在db中插入文件失败,则将原始文件移动到工作目录。谢谢您!让我试试这个。如果您尝试过这个用例,您是否介意分享代码。感谢Mauro的回复!我已经在使用File Inbound endpoint读取该文件,并且非常希望使用自定义Java组件删除该文件-我已经尝试过了,但它没有使用File.delete()删除该文件。我是否需要在Mule Server中设置任何权限,以便它删除?当我用main方法在简单程序中使用相同的代码时,效果很好。你应该发布代码。如果有权限问题,你应该得到一个例外。谢谢毛罗!我已经在我的原始问题中发布了代码,你能看一下吗?但是你得到了一个异常和一个错误?为什么不记录文件路径以确保位于正确的位置?代码似乎没问题。
        return Boolean.valueOf(isDeleted);
    }