KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > contineo > core > JarBean


1 /*
2  * JarBean.java
3  *
4  * Created on 18. August 2003, 14:20
5  */

6
7 package org.contineo.core;
8
9 import java.io.BufferedInputStream JavaDoc;
10 import java.io.BufferedOutputStream JavaDoc;
11 import java.io.File JavaDoc;
12 import java.io.FileOutputStream JavaDoc;
13 import java.util.Enumeration JavaDoc;
14 import java.util.jar.JarEntry JavaDoc;
15 import java.util.jar.JarFile JavaDoc;
16
17 import org.apache.log4j.Level;
18 import org.apache.log4j.Logger;
19 /**
20  * This class is for handling with jar-files.
21  * @author Michael Scholz
22  * @version 1.0
23  */

24 public class JarBean {
25      
26     /**
27      * This method extracts all entries of a jar-file.
28      * @param jarsource Path of the jar-file.
29      * @param target Path of the extracted files.
30      * @return True if successfully extracted.
31      */

32     public static boolean unjar(String JavaDoc jarsource, String JavaDoc target) {
33         boolean result = true;
34         try {
35             if(!target.endsWith("/"))
36                 target = target + "/";
37             JarFile JavaDoc jar = new JarFile JavaDoc(jarsource);
38             JarEntry JavaDoc jare;
39             for(Enumeration JavaDoc enum1 = jar.entries(); enum1.hasMoreElements(); saveEntry(jar, jare, target))
40                 jare = (JarEntry JavaDoc)enum1.nextElement();
41         }
42         catch (Exception JavaDoc e) {
43             result = false;
44             logError(e.getMessage());
45         }
46         return result;
47     }
48
49     /**
50      * This method extracts one entry of a jar-file.
51      * @param jarsource Path of the jar-file.
52      * @param target Path of the extracted files.
53      * @param entry Name of the entry to be extracted.
54      * @return True if successfully extracted.
55      */

56     public static boolean unjar(String JavaDoc jarsource, String JavaDoc target, String JavaDoc entry) {
57         boolean result = true;
58         try {
59             if(!target.endsWith("/"))
60                 target = target + "/";
61             JarFile JavaDoc jar = new JarFile JavaDoc(jarsource);
62             JarEntry JavaDoc jare = new JarEntry JavaDoc(entry);
63             saveEntry(jar, jare, target);
64         }
65         catch (Exception JavaDoc e) {
66             result = false;
67             logError(e.getMessage());
68         }
69         return result;
70     }
71
72     private static void saveEntry(JarFile JavaDoc jar, JarEntry JavaDoc jare, String JavaDoc target) throws Exception JavaDoc {
73         File JavaDoc file = new File JavaDoc(target + jare.getName());
74         if(jare.isDirectory()) {
75             file.mkdirs();
76         }
77         else {
78             java.io.InputStream JavaDoc is = jar.getInputStream(jare);
79             BufferedInputStream JavaDoc bis = new BufferedInputStream JavaDoc(is);
80             File JavaDoc dir = new File JavaDoc(file.getParent());
81             dir.mkdirs();
82             FileOutputStream JavaDoc fos = new FileOutputStream JavaDoc(file);
83             BufferedOutputStream JavaDoc bos = new BufferedOutputStream JavaDoc(fos);
84             for(int letter = 0; (letter = bis.read()) != -1;)
85                 bos.write((byte)letter);
86             bos.close();
87             fos.close();
88             bis.close();
89         }
90     }
91     
92     private static void logError(String JavaDoc message) {
93         Logger logger = LoggingManager.getLogger(org.contineo.core.JarBean.class);
94         if (logger.isEnabledFor(Level.ERROR))
95             logger.error(message);
96     }
97 }
98
Popular Tags