2023年12月2日发(作者:)

java读取jar中的资源_读取jar包中资源文件的两种方法一、构造url// 生成资源URL://jar:file:/D:!/ fileURL = new URL(“jar:file:/”+dirPath+“!/”);// 通过ream()返回这个url的字节流。InputStream input = ream();InputStreamReader in = new InputStreamReader(input);// 创建输入读流BufferedReader reader = new BufferedReader(in);// 创建缓冲读流String line;while ((line = ne()) != null) {// 循环显示文件内容n(line);}();// 关闭缓冲读流();// 关闭JAR文件对象流。二、使用工具类.*JarFile jarFile = new JarFile(jarFileName);// 根据传入JAR文件创建JAR文件对象JarEntry entry = Entry(“”);// 获得JAR文件中的单个文件的JAR实体InputStream input = utStream(entry);// 根据实体创建输入流InputStreamReader in = new InputStreamReader(input);// 创建输入读流BufferedReader reader = new BufferedReader(in);// 创建缓冲读流String line;while ((line = ne()) != null) {// 循环显示文件内容n(line);}();// 关闭缓冲读流();// 关闭JAR文件对象流在做项目时最先使用的是第一种方法,直接将jar看做文件夹构造出url进行处理。但是后来发现在这种方法在linux环境下不适用,构造的url非法导致无法使用openstream()。所以建议使用第二种方法。package ;import .*;import .*;import edReader;import ption;import tream;import treamReader;public class OperatorJAR { // 操作JAR文件的类public static void readJARList(String fileName) throws IOException {// 显示JAR文件内容列表JarFile jarFile = new JarFile(fileName); // 创建JAR文件对象Enumeration en = s(); // 枚举获得JAR文件内的实体,即相对路径n(“文件名t文件大小t压缩后的大小”);while (eElements()) { // 遍历显示JAR文件中的内容信息process(ement()); // 调用方法显示内容}}private static void process(Object obj) {// 显示对象信息JarEntry entry = (JarEntry) obj;// 对象转化成Jar对象String name = e();// 文件名称long size = e();// 文件大小long compressedSize = pressedSize();// 压缩后的大小n(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 = Entry(fileName);// 获得JAR文件中的单个文件的JAR实体InputStream input = utStream(entry);// 根据实体创建输入流readFile(input);// 调用方法获得文件信息();// 关闭JAR文件对象流}public static void readFile(InputStream input) throws IOException {// 读出JAR文件中单个文件信息InputStreamReader in = new InputStreamReader(input);// 创建输入读流BufferedReader reader = new BufferedReader(in);// 创建缓冲读流String line;while ((line = ne()) != null) {// 循环显示文件内容n(line);}();// 关闭缓冲读流}public static void main(String args[]) throws IOException {// java程序主入口处OperatorJAR j = new OperatorJAR();n(“1.输入一个JAR文件(包括路径和后缀)”);Scanner scan = new Scanner();// 键盘输入值String jarFileName = ();// 获得键盘输入的值readJARList(jarFileName);// 调用方法显示JAR文件中的文件信息n(“2.查看该JAR文件中的哪个文件信息?”);String fileName = ();// 键盘输入值readJARFile(jarFileName, fileName);// 获得键盘输入的值}}