在以编程方式建立到远程ftp或sftp服务器的连接之后,可以使用java读取/home/www-data/content/文件,而无需写入本地系统中的文件。基本上,我希望在不下载的情况下使用阿帕奇蒂卡从该路径中提取文件的元数据。
更新:
我试着连接到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();发布于 2013-02-18 20:26:48
对于使用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,long)
对于FTP,您必须使用其他的东西,因为JSCH只支持SFTP协议。
发布于 2013-02-19 08:05:22
您可能需要尝试Apache Commons VFS (虚拟文件系统)。
它们有一个相当不错的一个简单的SFTP文件下载示例,但在您的示例中,您只需更改该示例的process()方法,并让它使用TIKA解析文件。
使用commons,您只需使用FileObject即可。在FileObject上,您可以调用doGetInputStream(),然后将其交给TIKA进行进一步处理。
https://stackoverflow.com/questions/14944178
复制相似问题