使用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();
答案 0 :(得分:1)
对于使用JSCH库的SFTP,您应该使用ChannelSFTP.get()方法并提供不写入磁盘的OutputStream实例(例如,ByteArrayOutputStream)。请参阅此处的JSCH股票示例:
http://www.jcraft.com/jsch/examples/Sftp.java.html
JavaDoc for get()方法:
对于FTP,您必须使用其他东西,因为JSCH仅支持SFTP协议。
答案 1 :(得分:1)
您可能想要试用Apache Commons VFS(虚拟文件系统)。
他们有一个相当不错的example of a simple SFTP file download,但在你的情况下你可以改变该例子的process()
方法并让它用TIKA解析文件。
使用commons vfs,您可以使用FileObject
。在FileObject上,您可以调用doGetInputStream(),然后您可以将其移交给TIKA进行进一步处理。