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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值