2012-02-14 99 views
0

我想從位於遠程服務器上的jar文件(例如,來自EAR的application.xml)中將文件讀取並複製到本地計算機。當我在網上搜索這個,我發現java.util.jar.JarFile API。該API僅從本地機器讀取jar文件,因爲它僅將字符串作爲輸入,而不是構造器中的jar位置URL。我知道org.apache.commons.net.ftp.FTPClient API。這個API可以將任何文件甚至jar從遠程服務器複製到本地機器。但我的要求是隻複製位於遠程服務器上的jar中的單個文件。如何從位於遠程服務器上的Jar文件讀取文件

請在這方面幫助我。

感謝 長Sameer

回答

0

我想你可能有更好的運氣,如果你嘗試創建自己的下載機制,這些方針的東西:

ZipInputStream zip = null; 
    try { 
     zip = new ZipInputStream(url.openStream()); 

     ZipEntry entry; 
     do{ 
      entry = zip.getNextEntry(); 
     } while(!yourExpectedFileName.equals(entry.getName()) 


     while(zip.available()){ 
      //read your data 
     } 
     zip.closeEntry(); 

    } finally { 
     if (zip != null) 
      zip.close(); 
    } 
+0

服務器拒絕讓我編輯我的問題,但如果找不到該文件,請確保在第一次檢查「空」時結束循環。 – Marcelo 2012-02-14 11:34:07

+0

謝謝馬塞洛。我現在可以從EAR中將application.xml從遠程機器讀取並複製到本地機器。但我也只想閱讀EAR中存在的每個jar/war(不完整jar/war)的MANIFEST.MF。上面的代碼只給EAR內的jar和war輸入。對於上面的情況,我使用com.jcraft.jsch。* API獲得了InputStream。我的遠程服務器是SFTP,所以我使用jsch api來處理InputStream。但現在如何獲取每個jar和EAR內部的InputStream,因爲jsch API無法爲EAR內的war/jar提供InputStream? – sa9689 2012-02-14 12:40:43

+0

@SameerPansare我不認爲這是可能的,我幾乎可以肯定你必須下載整個.jar(位於.ear中)來讀取它的manifest.mf。 – Marcelo 2012-02-14 12:49:49

相關問題