JarTest
2014-04-17 18:46
302 查看
在学三大框架时候老是要去引用第三方的JAR包,其实Jar就是别人封装的 .class文件。我们自己也来封装自己的编译好的 .class文件形成我们自己的Jar文件,我们就可以引用自己的Jar去实现功能。 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.jar.JarEntry; import java.util.jar.JarOutputStream; // 将123文件夹下所有我们自己的 .class文件打包成一个123.jar文件 public class JarTest { public JarOutputStream jarout; public JarTest(File newjar) { try { jarout = new JarOutputStream(new FileOutputStream(newjar)); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } // pathname:源文件夹;newjar:新的jar文件的名称 public void jar(File pathname) { try { File[] listFiles = pathname.listFiles(); for (File f : listFiles) { if (f.isFile()) { InputStream in = new FileInputStream(f.getAbsoluteFile()); byte[] buff = new byte[1024]; int length = 0; // 创建jar文件中的条目对象 String path = f.getAbsolutePath(); path = path.substring(2);//为了去除绝对路径前的"f:" JarEntry jarEntry = new JarEntry(path); // 指定从此条目开始处写入数据 jarout.putNextEntry(jarEntry); while ((length = in.read(buff)) != -1) { jarout.write(buff, 0, length); } in.close(); } else { this.jar(f);// 递归调用 } } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } // 将123文件夹下所有我们自己的 .class文件打包成一个123.jar文件 public static void main(String[] args) { JarTest jt = new JarTest(new File("f:\\123.jar")); jt.jar(new File("f:\\123")); } }