2013-02-18 30 views
0

使用java以編程方式建立與遠程服務器ftpsftp的連接後,可以在不寫入本地系統文件的情況下讀取/home/www-data/content/的文件。基本上我想提取文件的元數據使用Apache Tika從該路徑沒有下載。從遠程ftp服務器提取文件的內容而不寫入本地磁盤中的文件

UPDATE:

我試圖用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

這絕對是可能的,但你將不得不提供更多關於如何從Java代碼連接到遠程ftp/sftp的細節 - 你使用的是什麼庫等 – rootkit 2013-02-18 19:52:18

+0

@ rootkit007:我更新了我的問題, 。 – user850234 2013-02-18 20:00:39

回答

1

對於使用JSCH庫,你應該使用ChannelSFTP.get()方法和提供的OutputStream實例不會寫入到磁盤(例如,ByteArrayOutputStream)SFTP。見JSCH股票例如這裏:

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

和javadoc的get()方法:

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協議。

1

您可能想嘗試Apache Commons VFS(虛擬文件系統)。

他們有一個相當不錯的example of a simple SFTP file download,但在你的情況下,你可以改變該示例的process()方法,讓它用TIKA解析文件。

使用commons vfs,你可以使用FileObject。在FileObject上,您可以調用doGetInputStream(),然後您可以將其交給TIKA進行進一步處理。

相關問題