0

在使用 java 以编程方式建立与远程ftp或服务器的连接后,无需写入本地系统中的sftp文件即可读取文件。/home/www-data/content/基本上我想使用Apache Tika从该路径中提取文件的元数据而不下载。

更新 :

我试图与JSch连接,它是SSH2.

JSch jsch = new JSch();
session = jsch.getSession(SFTPUSER,SFTPHOST,SFTPPORT);
session.setPassword(SFTPPASS);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
4

2 回答 2

1

对于使用 JSCH 库的 SFTP,您应该使用 ChannelSFTP.get() 方法并提供不写入磁盘的 OutputStream 实例(例如,ByteArrayOutputStream)。请参阅此处的 JSCH 股票示例:

http://www.jcraft.com/jsch/examples/Sftp.java.html

以及 get() 方法的 JavaDoc:

http://epaul.github.com/jsch-documentation/javadoc/com/jcraft/jsch/ChannelSftp.html#get(java.lang.String,java.io.OutputStream,com.jcraft.jsch.SftpProgressMonitor,int,长)

对于 FTP,您将不得不使用其他东西,因为 JSCH 仅支持 SFTP 协议。

于 2013-02-18T20:26:48.937 回答
1

您可能想尝试Apache Commons VFS(虚拟文件系统)。

他们有一个相当不错的简单 SFTP 文件下载示例,但在您的情况下,您可以更改该process()示例的方法并让它使用 TIKA 解析文件。

使用 commons vfs,您只需使用FileObject. 在 FileObject 上,您可以调用 doGetInputStream() ,然后您可以将其交给 TIKA 进行进一步处理。

于 2013-02-19T08:05:22.587 回答