六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 20|回复: 0

Java6学习笔记38——操作JAR文件

[复制链接]

升级  36.35%

563

主题

563

主题

563

主题

探花

Rank: 6Rank: 6

积分
1727
 楼主| 发表于 2013-2-3 14:15:25 | 显示全部楼层 |阅读模式
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);
String name = filename.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);
}
}
}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表