4

我正在使用 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)

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

4

4 回答 4

2

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

于 2013-10-25T13:14:12.547 回答
2

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

希望能帮到你。

于 2013-10-25T13:51:31.247 回答
1

对这种类型的工作使用 spring-integration(参见这个例子)以获得进一步的解释

于 2013-10-25T13:54:55.990 回答
0

使用 Tasklet 通过 sftp 发送文件。请参阅此链接链接以获取更多信息/编码。

于 2017-02-16T05:07:07.700 回答