zoukankan      html  css  js  c++  java
  • 【Java学习笔记】操作JAR文件

    作者: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/

  • 相关阅读:
    DeviceIOControl读写硬盘设备
    #ifdef的用法
    更改Visual Studio 2010的主题设置[.vssettings格式]
    vc2010 vs2010 智能插件Visual Assist 安装,设置
    VS2010 C++ 操作Excel表格的编程实现
    Python 字符串
    配置opencv2.4.11生成release版本
    配置opencv2.411调试版本(debug)
    边沿检测与提取,轮廓跟踪
    CComboBox控件的使用 1
  • 原文地址:https://www.cnblogs.com/gnuhpc/p/2822265.html
Copyright © 2011-2022 走看看