在学三大框架时候老是要去引用第三方的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"));
}
}
JarTest
最新推荐文章于 2021-06-15 08:36:00 发布