1 import java.io.File;
2 import java.io.FileInputStream;
3 import java.io.FileOutputStream;
4 import java.io.IOException;
5 import java.util.jar.JarEntry;
6 import java.util.jar.JarOutputStream;
7
8 public class EJob {
9
10 public static File createTempJar(String root) throws IOException {
11 if (!new File(root).exists()) {
12 return null;
13 }
14
15 final File jarFile = File.createTempFile("EJob-", ".jar", new File(System
16 .getProperty("java.io.tmpdir")));
17
18 Runtime.getRuntime().addShutdownHook(new Thread() {
19 @Override
20 public void run() {
21 jarFile.delete();
22 }
23 });
24
25 JarOutputStream out = new JarOutputStream(new FileOutputStream(jarFile));
26 createTempJarInner(out, new File(root), "");
27 out.flush();
28 out.close();
29 return jarFile;
30 }
31
32 private static void createTempJarInner(JarOutputStream out, File f,
33 String base) throws IOException {
34 if (f.isDirectory()) {
35 File[] fl = f.listFiles();
36 if (base.length() > 0) {
37 base = base + "/";
38 }
39 for (int i = 0; i ) {
40 createTempJarInner(out, fl[i], base + fl[i].getName());
41 }
42 } else {
43 out.putNextEntry(new JarEntry(base));
44 FileInputStream in = new FileInputStream(f);
45 byte[] buffer = new byte[1024];
46 int n = in.read(buffer);
47 while (n != -1) {
48 out.write(buffer, 0, n);
49 n = in.read(buffer);
50 }
51 in.close();
52 }
53 }
54 }