JAVA操作jar文件的实用工具类

package com.file; 

import java.util.*; 
import java.util.jar.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class OperatorJAR { // 操作JAR文件的类
	public static void readJARList(String fileName) throws IOException {// 显示JAR文件内容列表
		JarFile jarFile = new JarFile(fileName); // 创建JAR文件对象
		Enumeration en = jarFile.entries(); // 枚举获得JAR文件内的实体,即相对路径
		System.out.println("文件名\t文件大小\t压缩后的大小");
		while (en.hasMoreElements()) { // 遍历显示JAR文件中的内容信息
			process(en.nextElement()); // 调用方法显示内容
		}
	}

	private static void process(Object obj) {// 显示对象信息
		JarEntry entry = (JarEntry) obj;// 对象转化成Jar对象
		String name = entry.getName();// 文件名称
		long size = entry.getSize();// 文件大小
		long compressedSize = entry.getCompressedSize();// 压缩后的大小
		System.out.println(name + "\t" + size + "\t" + compressedSize);
	}

	public static void readJARFile(String jarFileName, String fileName)
			throws IOException {// 读取JAR文件中的单个文件信息
		JarFile jarFile = new JarFile(jarFileName);// 根据传入JAR文件创建JAR文件对象
		JarEntry entry = jarFile.getJarEntry(fileName);// 获得JAR文件中的单个文件的JAR实体
		InputStream input = jarFile.getInputStream(entry);// 根据实体创建输入流
		readFile(input);// 调用方法获得文件信息
		jarFile.close();// 关闭JAR文件对象流
	}

	public static void readFile(InputStream input) throws IOException {// 读出JAR文件中单个文件信息
		InputStreamReader in = new InputStreamReader(input);// 创建输入读流
		BufferedReader reader = new BufferedReader(in);// 创建缓冲读流
		String line;
		while ((line = reader.readLine()) != null) {// 循环显示文件内容
			System.out.println(line);
		}
		reader.close();// 关闭缓冲读流
	}

	public static void main(String args[]) throws IOException {// java程序主入口处
		OperatorJAR j = new OperatorJAR();
		System.out.println("1.输入一个JAR文件(包括路径和后缀)");
		Scanner scan = new Scanner(System.in);// 键盘输入值
		String jarFileName = scan.next();// 获得键盘输入的值
		readJARList(jarFileName);// 调用方法显示JAR文件中的文件信息
		System.out.println("2.查看该JAR文件中的哪个文件信息?");
		String fileName = scan.next();// 键盘输入值
		readJARFile(jarFileName, fileName);// 获得键盘输入的值
	}
}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值