JarTest

在学三大框架时候老是要去引用第三方的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"));
    }
} 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值