我想使用FTP流通道适配器来获取来自ftp服务器的非常简单的示例读取文件,我阅读了文档,但我不清楚,
我设法写文件到ftp服务器阅读一个例子但是,我无法获得阅读文件InputStream
<int:gateway service-interface="ftpmodule.service.FileWriterFTP"
default-request-channel="ftpOutChannel"/>
<int-ftp:outbound-channel-adapter
session-factory="ftpClientFactory" channel="ftpOutChannel"
remote-directory="/web/" remote-filename-generator-expression="headers['fileName']">
</int-ftp:outbound-channel-adapter>
和我的课程
public interface FileWriterFTP {
public void write(@Header("fileName") String fileName,@Payload String message);
public void write(@Header("fileName")String fileName,@Payload File file);
}
我运行应用程序,一切正常
public class AppConfig implements ApplicationRunner {
@Autowired
FileReaderFTP fileWriterFTP;
public static void main(String[] args) {
SpringApplication.run(AppConfig.class, args);
}
public void run(ApplicationArguments arg0) throws InterruptedException, ExecutionException, IOException {
fileWriterFTP.write("test.txt","test");
}
}
但我无法读取文件:
<int:channel id="ftpInChannel"/>
<int:gateway service-interface="ftpmodule.service.FileReaderFTP"
default-request-channel="ftpInChannel"/>
<int-ftp:inbound-streaming-channel-adapter session-factory="ftpClientFactory"
channel="ftpInChannel" filename-pattern="*.txt"
remote-file-separator="/" remote-directory="/web/">
</int-ftp:inbound-streaming-channel-adapter>
public interface FileReaderFTP {
public InputStream read(String fileName);
}
@Autowired
FileReaderFTP fileReaderFTP;
InputStream stream = fileReaderFTP.read("test.txt");
答案 0 :(得分:0)
您误解了入站通道适配器的工作方式 - 它是一个轮询式适配器,可将输入流发送到通道。
对于您的方案,您需要使用带有流GET命令的出站网关。
您还需要更多代码,因为对于流请求,您负责关闭输入流所属的会话。