2012-02-14 3 views
0

Я хочу прочитать и скопировать файл из файла jar (например, application.xml из EAR), расположенного на удаленном сервере, на локальный компьютер. когда я ищу в сети для этого, я нашел java.util.jar.JarFile API. Этот API-интерфейс читается только с локальной машины, так как он принимает только строку как входную, а не URL-адрес для расположения jar в конструкторе. Я знаю API org.apache.commons.net.ftp.FTPClient. Этот API может скопировать любой файл или даже банку с удаленного сервера на локальный компьютер. Но мое требование состоит в том, чтобы скопировать только один файл из jar, расположенный на удаленном сервере.как читать файл из файла Jar, расположенного на удаленном сервере

Пожалуйста, помогите мне в этом.

Благодаря Самир

ответ

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

Сервер отказывается позволить мне изменить мой вопрос, но убедитесь, что вы проверяете значение «null» на первом, а для завершения цикла, если файл не найден. – Marcelo

+0

Спасибо Марсело. Теперь я могу читать и копировать application.xml с EAR с удаленной машины на локальную машину. но я также хочу читать MANIFEST.MF только каждую банку/войну (не полную банку/войну), присутствующую в EAR. выше кода дают только вход для банды и войны внутри EAR. для вышеприведенного случая я получил InputStream, используя com.jcraft.jsch. * API. Мой удаленный сервер SFTP, поэтому я использовал jsch api для InputStream. но теперь, как получить InputStream для каждой банки и войны внутри EAR, поскольку jsch API не может дать вам InputStream для войны/банки внутри EAR? – sa9689

+0

@SameerPansare Я не думаю, что это возможно, и я почти уверен, что вам придется загрузить весь .jar (расположенный внутри .ear), чтобы прочитать его manifest.mf. – Marcelo