【问题标题】:Spring batch Writer to write files directly to ftp location,Spring batch Writer直接将文件写入ftp位置,
【发布时间】:2013-10-25 12:15:53
【问题描述】:

我正在使用 Spring Batch 直接从 FTP 位置读取、处理、编写和创建文件。 我可以使用以下配置读取文件。

<bean id="cvsFileItemReader2" class="org.springframework.batch.item.file.FlatFileItemReader">
    <!-- Read a csv file -->
<property name="resource" 
value="ftp://user123:12496@ftp.myftp.net/Ftpfiles/it/se/dev/expfiles/ABEXCEP.CSV"/>

但我正在尝试使用配置下方的 FlatFileItemWriter 编写代码

<bean class="org.springframework.batch.item.file.FlatFileItemWriter">
<property name="resource" value="ftp://user123:12496@ftp.myftp.net/Ftpfiles/it/se/dev/expfiles/ABFIXED.TXT" />

得到以下异常

java.io.FileNotFoundException:
  URL [ftp://user123:12496@ftp.myftp.net/Ftpfiles/it/se/dev/expfiles/ABFIXED.TXT]
  cannot be resolved to absolute file path because it does not reside in the file system:
  ftp://user123:12496@ftp.myftp.net/Ftpfiles/it/se/dev/expfiles/ABFIXED.TXT
  at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:205)

感谢您对此的任何帮助。谢谢

【问题讨论】:

    标签: java spring spring-batch


    【解决方案1】:

    我认为您无法创建远程 FTP Resource。一种解决方案是使用 Spring Batch 生成文件,然后您可以使用Spring IntegrationFTP/FTPS Adapters 将生成的文件传输到 FTP 服务器。

    希望能帮到你。

    【讨论】:

    • 根据我的分析,spring 集成也在本地创建文件并像在单独的 tasklet 中一样发送到 ftp 位置?我需要创建数据并将数据直接写入 ftp 位置
    • Spring 集成完全独立于 Spring 批处理。将其视为一个守护进程,它将检查批处理写入器的目标目录中是否有新生成的文件。如果是这种情况,它会将其发送到您的 ftp 服务器。
    【解决方案2】:

    Springs org.springframework.core.io.Resource 有一个名为 org.springframework.core.io.WritableResource 的子接口,我找到的唯一实现是:FileSystemResource 和 FileSystemContextResource。所以不可能直接在ftp上写。您可以做的是在磁盘上本地写入并编写一个从磁盘上传到 ftp 的 tasklet。

    【讨论】:

      【解决方案3】:

      对这种类型的工作使用 spring-integration(请参阅this example)以获得进一步的解释

      【讨论】:

      • 这个例子也在本地创建文件并发送到 ftp 位置,就像在单独的 tasklet 中一样?我需要创建数据并将数据直接写入 ftp 位置。
      【解决方案4】:

      使用 Tasklet 通过 sftp 发送文件。请参阅此linklink 了解更多信息/对此进行编码。

      【讨论】:

        猜你喜欢
        • 2020-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多