从Java档案(JAR)中读取文件

JAVX总结.txt JAVX总结使用,AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。 AJAX 不是新的编程语言,而是一种使用现有标准的新方法。 AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下 立即下载
Java 档案 (Java Archive, JAR) 文件是基于 Java 技术的打包方案。它们允许开发人员把所有相关的内容 (.class、图片、声音和支持文件等) 打包到一个单一的文件中。JAR 文件格式支持压缩、身份验证和版本,以及许多其它特性。


从 JAR 文件中得到它所包含的文件内容是件棘手的事情,但也不是不可以做到。这篇技巧就将告诉你如何从 JAR 文件中取得一个文件。我们会先取得这个 JAR 文件中的文件目录,然后读取指定的文件。


如果你熟悉常见的 ZIP 格式,你会发现 JAR 文件和它区别不大。JAR 文件提供了一个把多个文件打包到一个文件中的方法,而且被打包的每个文件都可以分别压缩。JAR 文件可以添加一个被称为 manifest 的东西,它们允许开发人员添加与内容有关的其它信息。例如,manifest 可以指明由 JAR 文件中的哪一个文件开始运行应用程序,或者指定这个库的版本等。


Java 2 SDK 标准版提供了一个 jar 工具,你可以通过它在控制台下读写 JAR 文件。然后,也许有些时候你想在你的程序中读写 JAR 文件。(这篇技巧仅涉及了在程序中读 JAR 文件的内容。)非常高兴,你可以做到,并且不需要考虑解压的问题,因为类库已经帮你处理了。你要用到的类都在 java.util.jar 包中。这里要用到的主要的类是 JarFile 类,它是一个 .jar 文件自身的引用。其中的每个文件则由 JarEntry 引用。


现在开始,传递一个参数给 JarFile 的构造函数创建一个 JarFile 实例,这个参数可能是 String 也可以是 File,它是一个 .jar 文件的位置:


JarFile jarFile = new JarFile("thefile.jar");


或者


File file = new File("thefile.jar");

JarFile jarFile = new JarFile(file);


它还有其它一些构造函数,支持身份验证和标记文件为删除。不过这里不会涉及到这些构造函数。


在你得到一个 JAR 文件的引用之后,你就可以读了其内容的目录了。JarFile 的 entries 方法返回一个所有条目的 Enumeration 对象,你还可以从 manifest 文件中获得它的属性、身份验证信息以及其它的信息,如条目的名称和大小。


Enumeration enum = jarFile.entries();

while (enum.hasMoreElements()) {

process(enum.nextElement());

}


以前提到过,每个个体都是一个 JarEntry。这个类有一些诸如 getName、getSize 和getCompressedSize 的方法。


记我们举例说明如何在程序中使用这些特性。下面的程序显示 JAR 文件的内容列表及各项的名称、大小和压缩后的大小。(这很类似于使用带 "t" 和 "v" 参数的 jar 命令。)


import java.io.*;

import java.util.*;

import java.util.jar.*;


public class JarDir {

public static void main (String args[])

throws IOException {

if (args.length != 1) {

System.out.println("Please provide a JAR filename");

System.exit(-1);

}

JarFile jarFile = new JarFile(args[0]);

Enumeration enum = jarFile.entries();

while (enum.hasMoreElements()) {

process(enum.nextElement());

}

}


private static void process(Object obj) {

JarEntry entry = (JarEntry)obj;

String name = entry.getName();

long size = entry.getSize();

long compressedSize = entry.getCompressedSize();

System.out.println(name + " " + size + " " + compressedSize);

}

}


如果你用 J2SE 1.4.1 中的 jce.jar 来试验上述的 JarDir 程序,你应该看像下面那样的输出 (在 ... 处应该显示更多文件):


META-INF/MANIFEST.MF 5315 1910

META-INF/4JCEJARS.SF 5368 1958

META-INF/4JCEJARS.DSA 2207 1503

META-INF/ 0 2

javax/ 0 0

javax/crypto/ 0 0

javax/crypto/interfaces/ 0 0

javax/crypto/interfaces/DHKey.class 209 185

javax/crypto/interfaces/DHPublicKey.class 265 215

javax/crypto/interfaces/DHPrivateKey.class 267 215

javax/crypto/interfaces/PBEKey.class 268 224

javax/crypto/SecretKey.class 167 155

...


注意输入内容顶部包含 META-INF 的那几行,这是 menifest 和安全验证信息。其中大小为 0 的条目不是文件,而是目录。


要真正从 JAR 文件中读取文件内容,你必须获得相应条目的 InputStream。这不同于 JarEntry。JarEntry 仅包括了入口信息,却并未包含实际的内容。这很像 File 和 FileInputSteram 的区别。只访问 File,永远不会打开相应的文件,它只读取在目录中的信息。下面告诉你如何从一个条目得到 InputStream:


InputStream input = jarFile.getInputStream(entry);


得到输入流之后,你只需要像读其它流一样读它就行了。如果是一个文本流,要记得使用一个 Reader 来从流中获取字符。而对于字节流,如图片,则只好直接读取。


下面的程序演示了从一个 JAR 文件中读取内容。运行程序时,需要指定要从 JAR 文件中读取的文件名,这个文件必须是文本文件类型。


import java.io.*;

import java.util.jar.*;


public class JarRead {

public static void main (String args[])

throws IOException {

if (args.length != 2) {

System.out.println("Please provide a JAR filename and file to read");

System.exit(-1);

}

JarFile jarFile = new JarFile(args[0]);

JarEntry entry = jarFile.getJarEntry(args[1]);

InputStream input = jarFile.getInputStream(entry);

process(input);

jarFile.close();

}


private static void process(InputStream input)

throws IOException {

InputStreamReader isr =

new InputStreamReader(input);

BufferedReader reader = new BufferedReader(isr);

String line;

while ((line = reader.readLine()) != null) {

System.out.println(line);

}

reader.close();

}

}


假设你有一个名为 myfiles.jar 的 JAR 文件,其中有一个名为 spider.txt 文本文件,再假设那个 pider.txt 包含如下文本:


The itsy bitsy spider

Ran up the water spout

Down came the rain and

Washed the spider out


运行下面的命令以显示 JAR 文件中该文本文件的内容:


java JarRead myfiles.jar spider.txt


关于 JAR 文件更多的内容,请参阅 JAR file specification。



原文:http://developer.java.sun.com/developer/JDCTechTips/2003/tt0122.html#1 
JavLibraryCrawler JavLibraryCrawler 该项目允许您从 javLibrary 中抓取所有电影。 它抓取以下项目: 标题 指定 图书馆网站的网址 类别清单 发布日期 期间 演员 封面图片网址 封面图片哈希值 它还会在本地下载封面图片并生成相应的图,您可以在设置中配置图片。 可以在找到图像设置教程。 ##安装 安装 pip。 安装scrapy。 安装依赖: pip install -r requirements.txt ##Run 这个项目包含两种爬虫: 评分最高的电影(best_rated_spider) 所有电影(actor_spider) 要启动爬虫,请运行:仅抓取评分最高的电影(500 部电影): scrapy crawl best_rated_spider 或者抓取库中的所有电影(> 150000部电影,所有封面图片的部分约为16 GB)。 scrapy cr 立即下载

相关推荐

JAVA PP持久层代码生成器

JAVA 持久层代码生成工具, 基本于freemarker的, 可自定义模板的代码生成器.

java读取txt文件及乱码处理

RandomAccessFile可以通过移动文件指针改变读取的位置,可以按照几种基本类型直接读取数据,可以跳过一定的字节。2.3 DataInputStream 与 RandomAccessFile 的区别。2.1 使用DataInputStream。2.2 使用RandomAccessFile。DataInputStream是输入流。FileInputStream有两种构造方式。

m0_60769905的博客 5270

Javva The Chatt-开源

IRC客户端以Java编码,受到流行的mIRC的启发。 该客户端与我对Java编程语言的学习一起被编码为一种惯例。 我想提供代码,以帮助希望在Java上开始对网络应用程序进行编程的任何人。

java读取libs下文件_从 Java 档案 (JAR) 中读取文件

Java 档案 (Java Archive, JAR) 文件是基于 Java 技术的打包方案。它们允许开发人员把所有相关的内容 (.class、图片、声音和支持文件等) 打包到一个单一的文件中。JAR 文件格式支持压缩、身份验证和版本,以及许多其它特性。从 JAR 文件中得到它所包含的文件内容是件棘手的事情,但也不是不可以做到。这篇技巧就将告诉你如何从 JAR 文件中取得一个文件。我们会先取得这个...

weixin_36304087的博客 527

JAV.zip_jaV.H0D_jav.com_jav513_javjobvideo日韩_vjav

yrtos_ MULTITASKING RTOS,.

jaclibrary评分最高影片磁力链爬虫.zip

爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。

java界面输出档案_从 Java 档案 (JAR) 中读取文件

2003年6月发表于 计算机世界网2004年3月发于 CCW-I2006年9月搬至 优快云Java 档案 (Java Archive, JAR) 文件是基于 Java 技术的打包方案。它们允许开发人员把所有相关的内容 (.class、图片、声音和支持文件等) 打包到一个单一的文件中。JAR 文件格式支持压缩、身份验证和版本,以及许多其它特性。从 JAR 文件中得到它所包含的文件内容是件棘手的事情...

weixin_42469706的博客 978

ROS实践(四)机器人SLAM建图(gmapping)

本文介绍了SLAM技术及其实现方法。SLAM(同步定位与地图构建)让机器人在未知环境中通过传感器数据自主定位并构建地图。文章详细讲解了激光雷达、RGBD相机等常用传感器,以及gmapping和map_server这两个ROS功能包的使用方法。重点阐述了SLAM建图实验步骤:配置gmapping节点参数、启动机器人仿真、运行gmapping节点、使用rviz可视化工具、通过键盘遥控机器人完成地图构建并保存。实验结果表明,该方法能有效实现机器人自主建图功能,为后续导航等应用奠定基础。

qq_1033275663的博客 4328

从 Java 档案(JAR) 中读取文件

2003年6月发表于 计算机世界网2004年3月发于 CCW-I2006年9月搬至 优快云  Java 档案 (Java Archive, JAR) 文件是基于 Java 技术的打包方案。它们允许开发人员把所有相关的内容 (.class、图片、声音和支持文件等) 打包到一个单一的文件中。JAR 文件格式支持压缩、身份验证和版本,以及许多其它特性。  从 JAR 文件中得到它所包含的文件内

边城客栈 - 学无止境 3758

ROS与UR10e机械臂实战:从零搭建到精准控制

本文详细介绍了如何从零开始搭建ROS与UR10e机械臂的开发环境,包括硬件准备、软件配置、网络设置以及MoveIt!运动控制实战。通过具体的代码示例和常见问题排查,帮助开发者快速掌握UR10e机械臂的精准控制技术,适用于工业自动化和实验室研究场景。

m3n5b7v8c9x的博客 772

2、TCGA数据处理(差异分析前处理)

注意:1、是R语言中用于读取文本文件并创建数据框的函数。它可以从文本文件中读取数据并将其存储为数据框的形式,每一列代表一个变量,每一行代表一个观察值。2、括号要成对,不能少了;3、file = 'TCGA-LIHC.htseq_counts.tsv'引号可以是单或双引号,建议单;4、逗号主要中英文,都是用英文模式才没错;5、.tsv文件类型必须要有,不能删除,否则读不进来;6、上面代码将TCGA-LIHC.htseq_counts.tsv文件读入并赋值给count1。

PLW_12的博客 2665

从 Java 档案 (JAR) 中读取文件

Java 档案 (Java Archive, JAR) 文件是基于 Java 技术的打包方案。它们允许开发人员把所有相关的内容 (.class、图片、声音和支持文件等) 打包到一个单一的文件中。JAR 文件格式支持压缩、身份验证和版本,以及许多其它特性。   从 JAR 文件中得到它所包含的文件内容是件棘手的事情,但也不是不可以做到。这篇技巧就将告诉你如何从 JAR 文件中取得一个文件。我们...

piziwang 193

3DMax高效建模与人工智能:一场颠覆传统创作的效率革命

AI与3DMax的结合,不仅是工具效率的升级,更是一场创作范式的革命。从“手动雕刻”到“智能共生”,设计师的角色正从执行者转向决策者。正如网友所言:“AI不是替代人类,而是赋予凡人以神笔。”在这场变革中,唯有拥抱技术、深耕创意,方能在数字艺术的浪潮中立于潮头。参考文献与工具推荐技术原理:火星时代资讯《人工智能和三维建模》工具实测:哔哩哔哩《tyDiffusion 3dsMax应用》9、Tripo AI官网教育案例:原创论文《人工智能技术介入三维动画课程建设》

m0_46478534的博客 3008

Java培训档案里会有记录吗_从 Java 档案(JAR) 中读取文件

Java 档案 (Java Archive, JAR) 文件是基于 Java 技术的打包方案。它们允许开发人员把所有相关的内容 (.class、图片、声音和支持文件等) 打包到一个单一的文件中。JAR 文件格式支持压缩、身份验证和版本,以及许多其它特性。从 JAR 文件中得到它所包含的文件内容是件棘手的事情,但也不是不可以做到。这篇技巧就将告诉你如何从 JAR 文件中取得一个文件。我们会先取得这个...

weixin_35953060的博客 103

从0到1打造工业级上位机:通信协议到架构设计的实战全流程

作为一名在工控领域摸爬滚打十余年的开发者,前阵子刚帮一家新能源工厂完成了一套工业上位机系统的从0到1搭建。从最初和PLC通信联调时的“连不上、传错数”,到最终系统7×24小时稳定运行,踩过的坑、攒下的实战经验,今天就毫无保留地拆解给各位同行。这篇文章会从通信层、数据层、UI层到架构层逐层深入,全是工业现场验证过的干货,新手也能跟着落地。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 658

【芯片设计- RTL 数字逻辑设计入门 番外篇6 -- 术语 Tile 介绍】

在系统级芯片(System on Chip, SoC)设计中,“tile” 是一个可以指代不同概念的术语,但通常它指的是芯片上的一个独立的功能单元或核心。一个 tile 可以包含一个或多个处理器核心、缓存、内存控制器、输入输出设备、外设接口或其他功能模块。在 SoC 上,多个 tile 可以被组合和连接起来,以形成一个完整的系统。

CodingCos的博客 3064
上一篇: 如何判断一个网页是刷新还是关闭的方法。
下一篇: 《java深度历险》阅读笔记[转]-
soleghost
博客等级 码龄24年 23粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值