当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。