【Java学习笔记】操作JAR文件

简介: 作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ JAR文件是一种具有特定构造的zip文件 1.JAR文件的创建: import java.util.

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/

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);
        }
    }
}

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/


               作者:gnuhpc
               出处:http://www.cnblogs.com/gnuhpc/
               除非另有声明,本网站采用知识共享“署名 2.5 中国大陆”许可协议授权。


分享到:

目录
相关文章
|
4天前
|
Java Android开发
java利用xml-rpc协议操作wordpress博客
java利用xml-rpc协议操作wordpress博客
10 1
|
2天前
|
安全 Java 数据安全/隐私保护
Java一分钟之-Java反射机制:动态操作类与对象
【5月更文挑战第12天】本文介绍了Java反射机制的基本用法,包括获取Class对象、创建对象、访问字段和调用方法。同时,讨论了常见的问题和易错点,如忽略访问权限检查、未捕获异常以及性能损耗,并提供了相应的避免策略。理解反射的工作原理和合理使用有助于提升代码灵活性,但需注意其带来的安全风险和性能影响。
16 4
|
3天前
|
JavaScript 前端开发 Java
java项目的打包将vue放到.jar里面部署
java项目的打包将vue放到.jar里面部署
|
3天前
|
Java 开发者
Java一分钟之-Java IO流:文件读写基础
【5月更文挑战第10天】本文介绍了Java IO流在文件读写中的应用,包括`FileInputStream`和`FileOutputStream`用于字节流操作,`BufferedReader`和`PrintWriter`用于字符流。通过代码示例展示了如何读取和写入文件,强调了常见问题如未关闭流、文件路径、编码、权限和异常处理,并提供了追加写入与读取的示例。理解这些基础知识和注意事项能帮助开发者编写更可靠的程序。
14 0
|
3天前
|
Java API
Java操作elasticsearch
Java操作elasticsearch
7 0
|
3天前
|
NoSQL Java Redis
在Java中操作Redis
在Java中操作Redis
7 0
|
3天前
|
SQL Java 关系型数据库
【JAVA基础篇教学】第十六篇:Java连接和操作MySQL数据库
【JAVA基础篇教学】第十六篇:Java连接和操作MySQL数据库
|
3天前
|
Oracle 关系型数据库 Java
java操作多数据源将oracle数据同步达梦数据库
java操作多数据源将oracle数据同步达梦数据库
|
4天前
|
Java
JDK环境下利用记事本对java文件进行运行编译
JDK环境下利用记事本对java文件进行运行编译
14 0
|
5天前
|
SQL Java 数据库连接
Java数据库编程实践:连接与操作数据库
Java数据库编程实践:连接与操作数据库
9 0