Spring批处理编写器将文件直接写入ftp位置,

时间:2013-10-25 12:15:53

标签: java spring spring-batch

我正在使用spring批处理直接从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)

感谢您的任何帮助..谢谢

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

希望可以帮到你。

答案 2 :(得分:1)

对此类工作使用spring-integration(请参阅this example)以获得进一步说明

答案 3 :(得分:0)

使用Tasklet通过sftp发送文件。有关详细信息/编码,请参阅此linklink