博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Java学习笔记】操作JAR文件
阅读量:6159 次
发布时间:2019-06-21

本文共 2671 字,大约阅读时间需要 8 分钟。

作者:

出处:

JAR文件是一种具有特定构造的zip文件

1.JAR文件的创建:

import java.util.jar.JarEntry;

import java.util.jar.JarOutputStream;
import java.util.jar.Manifest;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class JarCreate {
    public static void main(String arg[]) {
        JarCreate zc = new JarCreate();
        zc.create("testfile.jar",arg);
    }
    public void create(String jarfilename,String filename[]) {
        byte block[] = new byte[256];
        int length;
        try {

            //FileInputStream->Manifest->JarOutputStream

     //                                                                ^

     //                                                                 |

     //                                                    FileOutputStream

            FileInputStream fis = new FileInputStream("manifest");

            Manifest man = new Manifest(fis);//创建manifest文件
            FileOutputStream fos = new FileOutputStream(jarfilename);
            JarOutputStream out = new JarOutputStream(fos,man);
            for(int i=0; i<filename.length; i++) {
                FileInputStream in = new FileInputStream(filename[i]);
                String name = filename[i].replace(File.separatorChar,'/');

                JarEntry jarentry = new JarEntry(name);

                out.putNextEntry(jarentry);

                //FileInputStream->FileOutputStream

                while((length = in.read(block)) > 0)
                    out.write(block,0,length);

                out.closeEntry();

                in.close();
            }
            out.close();
        } catch(IOException e) {
            System.out.println(e);
        }
    }
}

2.JAR文件的读取

import java.util.jar.JarFile;

import java.util.jar.JarEntry;
import java.util.Enumeration;
import java.io.IOException;
public class JarList {
    public static void main(String arg[]) {
        JarList zl = new JarList();
        zl.list("testfile.jar");
    }
    public void list(String filename) {
        try {
            JarFile jarfile = new JarFile(filename);
Enumeration entrylist = jarfile.entries();
            while(entrylist.hasMoreElements()) {
                JarEntry jarentry = (JarEntry)entrylist.nextElement();
                System.out.println(jarentry.getName());
            }
            jarfile.close();
        } catch(IOException e) {
            System.out.println(e);
        }
    }
}

3.JAR文件的解压

import java.util.jar.JarFile;

import java.util.jar.JarEntry;
import java.util.Enumeration;
import java.io.InputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class JarExtract {
    public static void main(String arg[]) {
        JarExtract ze = new JarExtract();
        ze.extract("testfile.jar");
    }
    public void extract(String jarfilename) {
        byte block[] = new byte[256];
        int length;
        try {
            JarFile jarfile = new JarFile(jarfilename);
            Enumeration entrylist = jarfile.entries();
            while(entrylist.hasMoreElements()) {
                JarEntry jarentry = (JarEntry)entrylist.nextElement();
                InputStream in = jarfile.getInputStream(jarentry);
                String newfilename = jarentry.getName();
                FileOutputStream out = new FileOutputStream(newfilename);
                while((length = in.read(block)) > 0)
                    out.write(block,0,length);
                in.close();
                out.close();
            }
        } catch(IOException e) {
            System.out.println(e);
        }
    }
}

作者:

出处:

转载地址:http://twafa.baihongyu.com/

你可能感兴趣的文章
多路归并排序之败者树
查看>>
java连接MySql数据库
查看>>
深入python的set和dict
查看>>
Android JSON数据解析
查看>>
DEV实现日期时间效果
查看>>
java注解【转】
查看>>
centos 下安装g++
查看>>
下一步工作分配
查看>>
Response. AppendHeader使用大全及文件下载.net函数使用注意点(转载)
查看>>
jQuery最佳实践
查看>>
centos64i386下apache 403没有权限访问。
查看>>
jquery用法大全
查看>>
PC-BSD 9.2 发布,基于 FreeBSD 9.2
查看>>
css斜线
查看>>
Windows phone 8 学习笔记(3) 通信
查看>>
Revit API找到风管穿过的墙(当前文档和链接文档)
查看>>
Scroll Depth – 衡量页面滚动的 Google 分析插件
查看>>
Windows 8.1 应用再出发 - 视图状态的更新
查看>>
自己制作交叉编译工具链
查看>>
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
查看>>