java.lang.Object
java.net.URLConnection
java.net.JarURLConnection
一个指向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文件中读取。使用这个类无法获取用于修改或写入底层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目录
-
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!/,规范:baz/entry.txt
- URL:jar:http://www.foo.com/bar/jar.jar!/baz/entry.txt
- 上下文:jar:http://www.foo.com/bar/jar.jar!/baz,规范:entry.txt
- URL:jar:http://www.foo.com/bar/jar.jar!/baz/entry.txt
- 上下文:jar:http://www.foo.com/bar/jar.jar!/baz,规范:/entry.txt
- URL:jar:http://www.foo.com/bar/jar.jar!/entry.txt
- 自版本:
- 1.2
- 参见:
-
Field Summary
Fields declared in class java.net.URLConnection
allowUserInteraction, connected, doInput, doOutput, ifModifiedSince, url, useCaches
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescription如果URL指向JAR文件条目,则返回此连接的Attributes对象,否则返回null。如果URL指向JAR文件条目,则返回此连接的Certificate对象,否则返回null。返回此连接的条目名称。返回此连接的JAR条目对象(如果有)。abstract JarFile
返回此连接的JAR文件。返回此连接的Jar文件的URL。返回此连接的JAR文件的主Attributes。返回此连接的Manifest,如果没有则返回null。Methods declared in class java.net.URLConnection
addRequestProperty, connect, getAllowUserInteraction, getConnectTimeout, getContent, getContent, getContentEncoding, getContentLength, getContentLengthLong, getContentType, getDate, getDefaultAllowUserInteraction, getDefaultRequestProperty, getDefaultUseCaches, 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, setDefaultUseCaches, setDoInput, setDoOutput, setFileNameMap, setIfModifiedSince, setReadTimeout, setRequestProperty, setUseCaches, toString
-
Field Details
-
jarFileURLConnection
如果连接已经初始化,则返回到JAR文件URL的连接。这应该由connect设置。
-
-
Constructor Details
-
JarURLConnection
创建到指定URL的新JarURLConnection。- 参数:
-
url
- URL - 抛出:
-
MalformedURLException
- 如果在规范字符串中找不到合法协议或无法解析字符串。
-
-
Method Details
-
getJarFileURL
返回此连接的Jar文件的URL。- 返回:
- 此连接的Jar文件的URL。
-
getEntryName
返回此连接的条目名称。如果与此连接对应的JAR文件URL指向JAR文件而不是JAR文件条目,则此方法返回null。- 返回:
- 此连接的条目名称(如果有)。
-
getJarFile
返回此连接的JAR文件。- 返回:
- 此连接的JAR文件。如果连接是到JAR文件条目的连接,则返回JAR文件对象。
- 抛出:
-
IOException
- 如果尝试连接到此连接的JAR文件时发生IOException。 - 参见:
-
getManifest
返回此连接的Manifest,如果没有则返回null。- 返回:
- 与此连接的JAR文件对象对应的清单对象。
- 抛出:
-
IOException
- 如果获取此连接的JAR文件导致抛出IOException。 - 参见:
-
getJarEntry
返回此连接的JAR条目对象(如果有)。如果与此连接对应的JAR文件URL指向JAR文件而不是JAR文件条目,则此方法返回null。- 返回:
- 此连接的JAR条目对象,如果JAR URL指向JAR文件,则返回null。
- 抛出:
-
IOException
- 如果获取此连接的JAR文件导致抛出IOException。 - 参见:
-
getAttributes
如果URL指向JAR文件条目,则返回此连接的Attributes对象,否则返回null。- 返回:
- 如果URL指向JAR文件条目,则返回此连接的Attributes对象,否则返回null。
- 抛出:
-
IOException
- 如果获取JAR条目导致抛出IOException。 - 参见:
-
getMainAttributes
返回此连接的JAR文件的主Attributes。- 返回:
- 此连接的JAR文件的主Attributes。
- 抛出:
-
IOException
- 如果获取清单导致抛出IOException。 - 参见:
-
getCertificates
如果URL指向JAR文件条目,则返回此连接的Certificate对象,否则返回null。只有在通过从输入流读取直到达到流的末尾完全验证连接后,才能调用此方法。否则,此方法将返回null
。- 返回:
- 如果URL指向JAR文件条目,则返回此连接的Certificate对象,否则返回null。
- 抛出:
-
IOException
- 如果获取JAR条目导致抛出IOException。 - 参见:
-