JarURLConnection
java.lang.Object
|—java.net.URLConnection
|—|—java.net.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 条目
jar:http://www.foo.com/bar/baz.jar!/COM/foo/Quux.class
一个 Jar 文件
jar:http://www.foo.com/bar/baz.jar!/
一个 Jar 目录
jar:http://www.foo.com/bar/baz.jar!/COM/foo/
!/ 被称为分隔符。
通过 new URL(context, spec) 构造 JAR url 时,适用以下规则:
- 如果没有上下文 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
字段摘要
修饰符和类型 | 字段 | 描述 |
---|---|---|
protected URLConnection | jarFileURLConnection | 与 JAR 文件 URL 的连接(如果已启动连接)。 |
从类 java.net.URLConnection 继承的字段 |
---|
allowUserInteraction, connected, doInput, doOutput, ifModifiedSince, url, useCaches |
构造函数摘要
修饰符 | 构造函数 | 描述 |
---|---|---|
protected | JarURLConnection(URL url) | 为指定的 URL 创建新的 JarURLConnection。 |
方法总结
修饰符和类型 | 方法 | 描述 |
---|---|---|
Attributes | getAttributes() | 如果该连接的 URL 指向 JAR 文件条目,则返回该连接的 Attributes 对象,否则返回 null。 |
Certificate[] | getCertificates() | 如果此连接的 URL 指向 JAR 文件条目,则返回此连接的证书对象,否则返回 null。 |
String | getEntryName() | 返回此连接的条目名称。 |
JarEntry | getJarEntry() | 返回此连接的 JAR 条目对象(如果有)。 |
abstract JarFile | getJarFile() | 返回此连接的 JAR 文件。 |
URL | getJarFileURL() | 返回此连接的 Jar 文件的 URL。 |
Attributes | getMainAttributes() | 返回此连接的 JAR 文件的主要属性。 |
Manifest | getManifest() | 返回此连接的清单,如果没有则返回 null。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
从类 java.net.URLConnection 继承的方法 |
---|
addRequestProperty, connect, getAllowUserInteraction, getConnectTimeout, getContent, getContent, getContentEncoding, getContentLength, getContentLengthLong, getContentType, getDate, getDefaultAllowUserInteraction, getDefaultRequestProperty, getDefaultUseCaches, getDoInput, getDoOutput, getExpiration, getFileNameMap, getHeaderField, getHeaderField, getHeaderFieldDate, getHeaderFieldInt, getHeaderFieldKey, getHeaderFieldLong, getHeaderFields, getIfModifiedSince, getInputStream, getLastModified, getOutputStream, getPermission, getReadTimeout, getRequestProperties, getRequestProperty, getURL, getUseCaches, guessContentTypeFromName, guessContentTypeFromStream, setAllowUserInteraction, setConnectTimeout, setContentHandlerFactory, setDefaultAllowUserInteraction, setDefaultRequestProperty, setDefaultUseCaches, setDoInput, setDoOutput, setFileNameMap, setIfModifiedSince, setReadTimeout, setRequestProperty, setUseCaches, toString |
字段详细信息
jarFileURLConnection
protected URLConnection jarFileURLConnection
与 JAR 文件 URL 的连接(如果已启动连接)。 这应该由连接设置。
构造函数详细信息
JarURLConnection
protected JarURLConnection(URL url) throws MalformedURLException
为指定的 URL 创建新的 JarURLConnection。
参数:
参数名称 | 参数描述 |
---|---|
url | 网址 |
Throws:
Throw名称 | Throw描述 |
---|---|
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 文件对象
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果在尝试连接到此连接的 JAR 文件时发生 IOException。 |
getManifest
public Manifest getManifest() throws IOException
返回此连接的清单,如果没有则返回 null。
返回:
与此连接的 JAR 文件对象对应的清单对象。
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果获取此连接的 JAR 文件会导致抛出 IOException。 |
getJarEntry
public JarEntry getJarEntry() throws IOException
返回此连接的 JAR 条目对象(如果有)。 如果与此连接对应的 JAR 文件 URL 指向 JAR 文件而不是 JAR 文件条目,则此方法返回 null。
返回:
此连接的 JAR 条目对象,如果此连接的 JAR URL 指向 JAR 文件,则返回 null。
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果获取此连接的 JAR 文件会导致抛出 IOException。 |
getAttributes
public Attributes getAttributes() throws IOException
如果该连接的 URL 指向 JAR 文件条目,则返回该连接的 Attributes 对象,否则返回 null。
返回:
如果此连接的 URL 指向 JAR 文件条目,则为该连接的 Attributes 对象,否则为 null。
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果获取 JAR 条目导致抛出 IOException。 |
getMainAttributes
public Attributes getMainAttributes() throws IOException
返回此连接的 JAR 文件的主要属性。
返回:
此连接的 JAR 文件的主要属性。
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果获取清单导致抛出 IOException。 |
getCertificates
public Certificate[] getCertificates() throws IOException
如果此连接的 URL 指向 JAR 文件条目,则返回此连接的证书对象,否则返回 null。 只有在通过从输入流中读取直到到达流的末尾来完全验证连接后,才能调用此方法。 否则,此方法将返回 null
返回:
如果此连接的 URL 指向 JAR 文件条目,则为该连接的 Certificate 对象,否则为 null。
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果获取 JAR 条目导致抛出 IOException。 |