我自己找到答案。如果您认为我错了,任何人都可以纠正我。在中
sun.net.www.protocol.jar.JarURLConnection。我认为这是的默认实现
java.net.JarURLConnection。下面有一段代码。
如果将cache设置为true,则它将不会关闭JarFile的连接。这意味着它已被锁定。
class JarURLInputStream extends java.io.FilterInputStream { JarURLInputStream (InputStream src) { super (src); } public void close () throws IOException { try { super.close(); } finally { if (!getUseCaches()) { jarFile.close(); //will not close } } } } public void connect() throws IOException { if (!connected) { jarFile = factory.get(getJarFileURL(), getUseCaches()); if (getUseCaches()) { jarFileURLConnection = factory.getConnection(jarFile); } if ((entryName != null)) { jarEntry = (JarEntry)jarFile.getEntry(entryName); if (jarEntry == null) { try { if (!getUseCaches()) { jarFile.close(); //will not close } } catch (Exception e) { } throw new FileNotFoundException("JAR entry " + entryName + " not found in " + jarFile.getName()); } } connected = true; } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)