Module  java.base
软件包  java.net

Class JarURLConnection



  • public abstract class JarURLConnection
    extends URLConnection
    与Java ARchive(JAR)文件或JAR文件中的条目的URL连接。

    JAR URL的语法是:

      jar:<url>!/{entry} 

    例如:

    jar:http://www.foo.com/bar/baz.jar!/COM/foo/Quux.class

    JAR URL应用于引用JAR文件或JAR文件中的条目。 上面的示例是一个引用JAR条目的JAR URL。 如果省略条目名称,则URL引用整个JAR文件: jar:http://www.foo.com/bar/baz.jar!/

    当他们知道他们创建的URL是一个JAR URL,并且他们需要JAR特定的功能时,用户应该将通用URLConnection转换为JarURLConnection。 例如:

      URL url = new URL("jar:file:/home/duke/duke.jar!/");
     JarURLConnection jarConnection = (JarURLConnection)url.openConnection();
     Manifest manifest = jarConnection.getManifest(); 

    JarURLConnection实例只能用于从JAR文件读取。 使用此类不可能获得一个OutputStream修改或写入底层JAR文件。

    例子:

    罐子入口
    jar:http://www.foo.com/bar/baz.jar!/COM/foo/Quux.class
    一个jar文件
    jar:http://www.foo.com/bar/baz.jar!/
    一个罐子目录
    jar:http://www.foo.com/bar/baz.jar!/COM/foo/

    !/被称为分离器

    通过new URL(context, spec)构建JAR网址时,适用以下规则:

    • 如果没有上下文URL,并且传递给URL构造函数的规范不包含分隔符,则该URL被认为是引用JarFile。
    • 如果存在上下文URL,则假定上下文URL是指JAR文件或Jar目录。
    • 如果规范以'/'开始,Jar目录将被忽略,并且该规范被认为是Jar文件的根目录。

      例子:

      上下文: jar:http://www.foo.com/bar/jar.jar!/ ,spec: baz / entry.txt
      url: jar:http://www.foo.com/bar/jar.jar!/baz/entry.txt
      上下文: jar:http://www.foo.com/bar/jar.jar!/ baz ,spec: entry.txt
      url: jar:http://www.foo.com/bar/jar.jar!/baz/entry.txt
      上下文: jar:http://www.foo.com/bar/jar.jar!/ baz ,spec: /entry.txt
      url: jar:http://www.foo.com/bar/jar.jar!/entry.txt
    从以下版本开始:
    1.2
    另请参见:
    URLURLConnectionJarFileJarInputStreamManifestZipEntry
    • 字段详细信息

      • jarFileURLConnection

        protected URLConnection jarFileURLConnection
        与JAR文件URL的连接,如果连接已启动。 这应该通过连接设置。
    • 构造方法详细信息

      • JarURLConnection

        protected JarURLConnection​(URL url)
                            throws MalformedURLException
        创建新的JarURLConnection到指定的URL。
        参数
        url - 网址
        异常
        MalformedURLException - 如果在规范字符串中找不到合法协议,或者无法解析字符串。
    • 方法详细信息

      • getJarFileURL

        public URL getJarFileURL​()
        返回此连接的Jar文件的URL。
        结果
        该连接的Jar文件的URL。
      • getEntryName

        public String getEntryName​()
        返回此连接的条目名称。 如果与此连接相对应的JAR文件URL指向JAR文件而不是JAR文件条目,则此方法返回null。
        结果
        此连接的条目名称(如果有)。
      • getJarFile

        public abstract JarFile getJarFile​()
                                    throws IOException
        返回此连接的JAR文件。
        结果
        该连接的JAR文件。 如果连接是与JAR文件的条目的连接,则返回JAR文件对象
        异常
        IOException - 如果在尝试连接到此连接的JAR文件时发生IOException。
        另请参见:
        URLConnection.connect()
      • getManifest

        public Manifest getManifest​()
                             throws IOException
        返回此连接的清单,否则返回null。
        结果
        对应于此连接的JAR文件对象的清单对象。
        异常
        IOException - 如果获取此连接的JAR文件将导致抛出IOException。
        另请参见:
        getJarFile()
      • getJarEntry

        public JarEntry getJarEntry​()
                             throws IOException
        返回此连接的JAR条目对象(如果有)。 如果与此连接相对应的JAR文件URL指向JAR文件而不是JAR文件条目,则此方法返回null。
        结果
        此连接的JAR条目对象,如果此连接的JAR URL指向JAR文件,则为null。
        异常
        IOException - 如果获取此连接的JAR文件导致抛出IOException。
        另请参见:
        getJarFile()getJarEntry()
      • getAttributes

        public Attributes getAttributes​()
                                 throws IOException
        如果该连接的URL指向JAR文件条目,则返回此连接的Attributes对象,否则返回null。
        结果
        这个连接的Attributes对象,如果它的URL指向一个JAR文件条目,否则为空。
        异常
        IOException - 如果获取JAR条目导致抛出IOException。
        另请参见:
        getJarEntry()
      • getMainAttributes

        public Attributes getMainAttributes​()
                                     throws IOException
        返回此连接的JAR文件的主要属性。
        结果
        此连接的JAR文件的主要属性。
        异常
        IOException - 如果获取清单导致抛出IOException。
        另请参见:
        getJarFile()getManifest()
      • getCertificates

        public Certificate[] getCertificates​()
                                      throws IOException
        如果它的URL指向JAR文件条目,则返回此连接的证书对象,否则返回null。 一旦通过从输入流读取直到流已经到达结束,连接已被完全验证,才能调用此方法。 否则,此方法将返回null
        结果
        此连接的证书对象,如果其URL指向JAR文件条目,否则为空。
        异常
        IOException - 如果获取JAR条目导致抛出IOException。
        另请参见:
        getJarEntry()