2012-02-14 132 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

相关问题