當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java Java.net.JarURLConnection用法及代碼示例


先決條件 -Java 中的 JAR 文件
什麽是 Jar 文件?
JavaArchive(JAR) 將所有類捆綁在一個包中。由於存檔是壓縮的並且可以在單個 HTTP 連接中下載,因此下載存檔通常比下載單個類更快。盡管 jar 捆綁了所有類,但在需要時可以使用它們的完全分類名稱來引用各個類。 Java 提供了多種從 jar 文件中提取信息的機製。本文介紹了使用 JarURLConnection 類的方法之一。
此類表示與 jar 文件、條目或目錄的 URL 連接。當程序員知道 URL 引用 jar 條目並且需要 jar-specific 函數時,可以使用它。
Jar URL 的語法:-
Jar URL 以指向 jar 存檔位置的通用 URL 開頭。比 ”罐:” 協議為前綴,最後為“!/” 並且 jar 存檔內文件的路徑在此 URL 的末尾添加後綴。例如,

jar:http://www.abcd.com/networking.jar!/com/foo/example.class

如果不使用路徑部分,則 URL 指向整個 jar 存檔。例如,

jar:http://www.abcd.com/networking.jar!/

構造函數:創建到指定 URL 的 jar URL 連接。

Syntax :protected JarURLConnection(URL url)
                    throws MalformedURLException
Parameters :
url : URL to a jar archive
Throws : 
MalformedURLException: If no protocol identified or string could not be parsed.

方法:

  1. getJarFileURL():返回此連接的 jar 文件的 url。
    Syntax :public URL getJarFileURL()
  2. getEntryName():返回此連接的條目名稱,如果它指向 jar 文件而不是 jar 條目文件,則返回 null。
    Syntax :public String getEntryName()
  3. getJarFile():返回此連接的 jar 文件。
    Syntax :public abstract JarFile getJarFile()
                                throws IOException
    Throws : 
    IOException : If IO exception occurs during connection
  4. getManifest():返回此連接的清單,如果不存在則返回 null。清單是一個特殊文件,可以包含有關打包在 JAR 文件中的文件的信息。
    Syntax :public Manifest getManifest()
                         throws IOException
    Throws :
    IOException : If IO exception is thrown while connecting to the url.
  5. getJarEntry():返回此連接的 JAR 條目對象。 java應用程序的入口點通常是具有該方法的類公共靜態無效主(字符串參數[])。如果 url 指向 jar 文件而不是條目,則此方法返回 null。
    Syntax : public JarEntry getJarEntry()
                         throws IOException
  6. getAttributes():如果 URL 指向 jar 條目文件,則返回此連接的屬性。有關屬性的更多信息,請訪問官方 Java 教程.
    Syntax :public Attributes getAttributes()
                             throws IOException
  7. getMainAttributes():返回此連接的主要屬性。
    Syntax :public Attributes getMainAttributes()
                                 throws IOException
  8. getCertificates():如果該連接指向 jar 條目文件,則返回該連接的證書對象。
    Syntax : public Certificate[] getCertificates()
                                  throws IOException

以下程序假設我們在程序中的 URL hard-coded 處有一個 jar 文件。可以看出,hard-coded URL 僅指向係統上的文件,通過為文件指定正確的 URL,可以在通過網絡使用 jar 文件時使用此類。
Java實現:


// Java program to illustrate various 
// jarURLConnection class methods  
import java.io.IOException; 
import java.net.JarURLConnection; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.security.cert.Certificate; 
import java.util.Arrays; 
import java.util.Map.Entry; 
import java.util.jar.Attributes; 
import java.util.jar.JarEntry; 
import java.util.jar.JarFile; 
import java.util.jar.Manifest; 
  
public class jarurltest  
{ 
  
    private final static String JAR_URL = "jar:file:/C:/Users/Rishabh/Desktop" +  
                                     "/testClass.jar!/test/testclass.class"; 
  
    public static void main(String[] args) throws Exception  
    { 
  
        try { 
  
            // Create a URL that refers to a jar file in the file system 
            URL FileSysUrl = new URL(JAR_URL); 
  
            // Create a jar URL connection object 
            JarURLConnection jarURLConn = (JarURLConnection) FileSysUrl.openConnection(); 
  
            // getJarFileURL() method 
            System.out.println("Jar file URL : " + jarURLConn.getJarFileURL()); 
  
            // getEntryName() method 
            System.out.println("Entry Name : " + jarURLConn.getEntryName()); 
  
            // getJarFile() method 
            JarFile jarFile = jarURLConn.getJarFile(); 
            System.out.println("Jar Entry: " + jarURLConn.getJarEntry()); 
  
            // getManifest() method 
            Manifest manifest = jarFile.getManifest(); 
            System.out.println("Manifest :" + manifest.toString()); 
  
            // getJarEntry() method 
            JarEntry jentry = jarURLConn.getJarEntry(); 
            System.out.println("Jar Entry : " + jentry.toString()); 
  
            // getAttributes() method 
            Attributes attr = jarURLConn.getAttributes(); 
            System.out.println("Attributes : " + attr); 
  
            // getMainAttributes() method 
            Attributes attrmain = jarURLConn.getMainAttributes(); 
            System.out.println("\nMain Attributes details: "); 
  
            for (Entry e : attrmain.entrySet())  
            { 
                System.out.println(e.getKey() + " " + e.getValue()); 
            } 
  
            // getCertificates() method 
            Certificate cert[] = jarURLConn.getCertificates(); 
            System.out.println("\nCertificates Info :" + Arrays.toString(cert)); 
  
        } catch (MalformedURLException e) { 
            e.printStackTrace(); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
  
    } 
  
} 

輸出:

Jar file URL : file:/C:/Users/Rishabh/Desktop/testClass.jar
Entry Name : test/testclass.class
Jar Entry: test/testclass.class
Manifest :java.util.jar.Manifest@2f1a6037
Jar Entry : test/testclass.class
Attributes : null

Main Attributes details: 
Manifest-Version 1.0
Main-Class test.testclass

Certificates Info :null

相關文章: 在 Java 中使用 JAR 和清單文件

參考:Official Java Documentation
書:Java 網絡編程,作者:Elliotte Rusty Harold



相關用法


注:本文由純淨天空篩選整理自佚名大神的英文原創作品 Java.net.JarURLConnection class in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。