KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > quadcap > io > dir > JarDirectory


1 package com.quadcap.io.dir;
2
3 /* Copyright 2000 - 2003 Quadcap Software. All rights reserved.
4  *
5  * This software is distributed under the Quadcap Free Software License.
6  * This software may be used or modified for any purpose, personal or
7  * commercial. Open Source redistributions are permitted. Commercial
8  * redistribution of larger works derived from, or works which bundle
9  * this software requires a "Commercial Redistribution License"; see
10  * http://www.quadcap.com/purchase.
11  *
12  * Redistributions qualify as "Open Source" under one of the following terms:
13  *
14  * Redistributions are made at no charge beyond the reasonable cost of
15  * materials and delivery.
16  *
17  * Redistributions are accompanied by a copy of the Source Code or by an
18  * irrevocable offer to provide a copy of the Source Code for up to three
19  * years at the cost of materials and delivery. Such redistributions
20  * must allow further use, modification, and redistribution of the Source
21  * Code under substantially the same terms as this license.
22  *
23  * Redistributions of source code must retain the copyright notices as they
24  * appear in each source code file, these license terms, and the
25  * disclaimer/limitation of liability set forth as paragraph 6 below.
26  *
27  * Redistributions in binary form must reproduce this Copyright Notice,
28  * these license terms, and the disclaimer/limitation of liability set
29  * forth as paragraph 6 below, in the documentation and/or other materials
30  * provided with the distribution.
31  *
32  * The Software is provided on an "AS IS" basis. No warranty is
33  * provided that the Software is free of defects, or fit for a
34  * particular purpose.
35  *
36  * Limitation of Liability. Quadcap Software shall not be liable
37  * for any damages suffered by the Licensee or any third party resulting
38  * from use of the Software.
39  */

40
41 import java.io.File JavaDoc;
42 import java.io.IOException JavaDoc;
43
44 import java.util.Enumeration JavaDoc;
45
46 import java.util.jar.JarFile JavaDoc;
47
48 import java.net.MalformedURLException JavaDoc;
49 import java.net.URL JavaDoc;
50
51 /**
52  *
53  *
54  * @author Stan Bailes
55  */

56
57 public class JarDirectory extends Directory {
58     URL JavaDoc base;
59     JarFile JavaDoc jar;
60     File JavaDoc file;
61
62     public JarDirectory(File JavaDoc f) throws IOException JavaDoc {
63         this.file = f;
64         this.jar = new JarFile JavaDoc(f);
65         this.base = new URL JavaDoc("jar:file:" + f.getAbsolutePath() + "!/");
66     }
67     
68     public Enumeration JavaDoc entries() {
69         final JarDirectory dir = this;
70         final Enumeration JavaDoc je = jar.entries();
71         return new Enumeration JavaDoc() {
72             public boolean hasMoreElements() {
73                 return je.hasMoreElements();
74             }
75             public Object JavaDoc nextElement() {
76                 java.util.jar.JarEntry JavaDoc j = (java.util.jar.JarEntry JavaDoc)je.nextElement();
77                 return j.getName();
78             }
79         };
80     }
81
82     public Entry getEntry(String JavaDoc name) {
83         java.util.jar.JarEntry JavaDoc j = jar.getJarEntry(name);
84         if (j != null) {
85             return new JarEntry(this, j);
86         } else {
87             return null;
88         }
89     }
90
91     public URL JavaDoc getURL(String JavaDoc name) throws MalformedURLException JavaDoc {
92         URL JavaDoc url = null;
93         if (name.charAt(0) == '/') name = name.substring(1);
94         java.util.jar.JarEntry JavaDoc j = jar.getJarEntry(name);
95         if (j != null) {
96             url = new URL JavaDoc(base, name);
97         }
98         return url;
99     }
100
101     public String JavaDoc getRealPath(String JavaDoc name) {
102         return null;
103     }
104
105     public String JavaDoc getRootPath() {
106         return file.getAbsolutePath();
107     }
108
109     public void close() throws IOException JavaDoc {
110         jar.close();
111     }
112
113     public boolean isFile() { return false; }
114 }
115
Popular Tags