test/java/util/zip/InterruptibleZip.java

Print this page

        

*** 28,63 **** import java.io.*; import java.util.zip.*; public class InterruptibleZip { - private static String rtJar() { - String bcp = System.getProperty("sun.boot.class.path"); - for (String pathElement : bcp.split(File.pathSeparator)) { - if (pathElement.endsWith(File.separator + "rt.jar") && - new File(pathElement).exists()) { - System.out.println("rtJar="+pathElement); - return pathElement; - } - if (pathElement.endsWith(File.separator + "classes") && - new File(pathElement).isDirectory()) { - System.out.println("rt.jar not available"); - return null; - } - } - throw new Error("Can't find rt.jar or classes directory"); - } public static void main(String[] args) throws Exception { /* Interrupt the current thread. The is.read call below ! should continue reading rt.jar. */ - String rtJar = rtJar(); - if (rtJar == null) return; Thread.currentThread().interrupt(); ! ZipFile zf = new ZipFile(rtJar); ! ZipEntry ze = zf.getEntry("java/lang/Object.class"); InputStream is = zf.getInputStream(ze); byte[] buf = new byte[512]; int n = is.read(buf); boolean interrupted = Thread.interrupted(); System.out.printf("interrupted=%s n=%d name=%s%n", --- 28,45 ---- import java.io.*; import java.util.zip.*; public class InterruptibleZip { public static void main(String[] args) throws Exception { /* Interrupt the current thread. The is.read call below ! should continue reading input.jar. */ Thread.currentThread().interrupt(); ! ZipFile zf = new ZipFile(new File(System.getProperty("test.src", "."), "input.jar")); ! ZipEntry ze = zf.getEntry("Available.java"); InputStream is = zf.getInputStream(ze); byte[] buf = new byte[512]; int n = is.read(buf); boolean interrupted = Thread.interrupted(); System.out.printf("interrupted=%s n=%d name=%s%n",