jar包的读取1
---恢复内容开始---
昨天在做项目插件的时候,因为会用到jar包中的一个文件来初始化程序。并且以后还是会访问这个文件,所以就想到干脆吧文件拷贝到指定目录。在拷贝的时候也费了好一会时间,这里涉及到了jar文件的操作,在这里记下来以后有用到的时候方便查找
- 如果jar中还存在jar包或者其他压缩包,则使用这种方式读取
public class JarFileAccess { private static final String fileSeparator = System.getProperty("file.separator");
/**
*
* @param jarFileName jar文件的名称,(注意要添加“.jar”后缀,不要加任何路径分隔符)
* @param fromDir jar的路径
* @param toDir 要将文件拷贝到指定位置的路径
* @throws Exception
*/
public void accessJarFile(String jarFileName, String fromDir, String toDir) throws Exception{
JarFile myJarFile = new JarFile(fromDir+fileSeparator+jarFileName);
Enumeration myEnum = myJarFile.entries();
while(myEnum.hasMoreElements()){
JarEntry myJarEntry = (JarEntry)myEnum.nextElement();
System.out.println(myJarEntry.getName());
if(myJarEntry.getName().equals("config.jar")){
InputStream is = myJarFile.getInputStream(myJarEntry);
FileOutputStream fos = new FileOutputStream(toDir+fileSeparator+myJarEntry.getName());
byte[] b = new byte[1024];
int len;
while((len = is.read(b))!= -1){
System.out.println(b.toString());
fos.write(b, 0, len);
}
fos.close();
is.close();
break;
} else{
continue;
}
}
myJarFile.close();
}
}
- 如果要读取的文件在jar包中不是以压缩包或jar的形式存在,用下面的方式方便点
public class JarFileAccess{
/**
* @function 读取jar包中指定文件的内容并且以字符串形式返回
* @param jarPath jar文件的路径
* @param name 要读取的文件名称,要添加后缀名
* @return String 返回读取到的信息
* @throws IOException
*/
public String readFileFromJar(String jarPath ,String name) throws IOException {
JarFile jf = new JarFile(jarPath);
Enumeration<JarEntry> jfs = jf.entries();
StringBuffer sb = new StringBuffer();
while(jfs.hasMoreElements())
{
JarEntry jfn = jfs.nextElement();
if(jfn.getName().endsWith(name))
{
InputStream is = jf.getInputStream(jfn);
BufferedInputStream bis = new BufferedInputStream(is);
byte[] buf = new byte[is.available()];
while(bis.read(buf)!=-1)
{
sb.append(new String(buf).trim());
}
bis.close();
is.close();
break;
}
}
return sb.toString();
}
/**
* @function 读取jar包中指定文件的内容并且将读取到的内容拷贝到指定文件中
* @param jarPath jar文件的路径
* @param name 要读取的文件名称,要添加后缀名
* @param toNewFile 将拷贝到的信息复制到目标文件
* @throws IOException
*/
public void readFileFromJar(String jarPath ,String name,File toNewFile) throws IOException {
JarFile jf = new JarFile(jarPath);
Enumeration<JarEntry> jfs = jf.entries();
StringBuffer sb = new StringBuffer();
while(jfs.hasMoreElements())
{
JarEntry jfn = jfs.nextElement();
if(jfn.getName().endsWith(name))
{
InputStream is = jf.getInputStream(jfn);
FileOutputStream fos = new FileOutputStream(toNewFile);
BufferedInputStream bis = new BufferedInputStream(is);
byte[] buf = new byte[is.available()];
while(bis.read(buf)!=-1)
{
fos.write(buf); }
fos.close();
bis.close();
is.close();
break;
}
} } }
---恢复内容结束---
jar包的读取1的更多相关文章
- 【解惑】深入jar包:从jar包中读取资源文件
[解惑]深入jar包:从jar包中读取资源文件 http://hxraid.iteye.com/blog/483115 TransferData组件的spring配置文件路径:/D:/develop/ ...
- (转)java 从jar包中读取资源文件
(转)java 从jar包中读取资源文件 博客分类: java 源自:http://blog.csdn.net/b_h_l/article/details/7767829 在代码中读取一些资源文件 ...
- 深入jar包:从jar包中读取资源文件getResourceAsStream
一.背景 我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等). 在单独运行的时候这些简单的处理当然不会有问题.但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不 ...
- 从jar包中读取资源
package myspider; import java.io.UnsupportedEncodingException; /** * * @author mark */ public class ...
- java 从jar包中读取资源文件
在代码中读取一些资源文件(比如图片,音乐,文本等等),在集成环境(Eclipse)中运行的时候没有问题.但当打包成一个可执行的jar包(将资源文件一并打包)以后,这些资源文件找不到,如下代码: Jav ...
- jar包的读取
昨天在做项目插件的时候,因为会用到jar包中的一个文件来初始化程序.并且以后还是会访问这个文件,所以就想到干脆吧文件拷贝到指定目录.在拷贝的时候也费了好一会时间,这里涉及到了jar文件的操作,在这里记 ...
- 将properties文件放在Jar包并读取
有时候需要在一个library内部打包一个properties文件,包含一些配置信息,而不能部署在外部. 在maven工程里面,将properties文件放在src/main/resources目录下 ...
- [Java基础] 深入jar包:从jar包中读取资源文件
转载: http://hxraid.iteye.com/blog/483115?page=3#comments 我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的 ...
- JAR包中读取资源文件
我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的处理当然不会有问题.但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了.看看 ...
随机推荐
- Kubernetes中的nodePort,targetPort,port的区别和意义(转)
原文https://blog.csdn.net/u013760355/article/details/70162242 https://blog.csdn.net/xinghun_4/article/ ...
- linux下nodejs的安装
一.下载 https://nodejs.org/en/download/ 然后,解压 二.配置环境变量 配置环境变量:在/etc/profile文件新增:export NODE_HOME=/usr/l ...
- Java如何连接SQLServer,并实现查询、修改、删除方法
场景:A:在UI自动化时,删除数据时候,在界面UI提示“该XX已被使用,无法删除”. 这时候我们有需要做数据初始化的操作,需要把历史数据做删除,来确脚本运行的重复执行,和稳定性质. B: 在做新增操作 ...
- 洛谷P4495 奇怪的背包 [HAOI2018] 数论
正解:数论+dp 解题报告: 传送门! 首先看到这题,跳无数次,自然而然可以想到之前考过好几次了的一个结论——如果只考虑无限放置i,它可以且仅可以跳到gcd(p,v[i]) 举一反三一下,如果有多个i ...
- 洛谷P4587 神秘数 [FJOI2016] 主席树
正解:主席树 解题报告: 先放下传送门QAQ 首先可以先思考如果只有一组询问,怎么解决 可以这么想,最开始一个数也麻油的时候能表示的最大的数是0嘛 然后先排个序,按顺序每次新加入一个数x,设加入这个数 ...
- 理解Hbase和BigTable(转)
add by zhj: 这篇文章写的通俗易懂,介绍了HBase最重要的几点特性. 英文原文:https://dzone.com/articles/understanding-hbase-and-big ...
- 第四节:Linux下如何解决冲突
当出现冲突,我们push的时候,会出现: 然后pull,下拉到本地: 查看冲突: 然后进入冲突文件: 修改为: 保存退出. 提交:
- finecms5采集接口下载
哪里有finecms采集接口可以下载?我们在用finecms建站时比较纠结的是要如何采集文章,finecms商城是有售卖采集插件,价格是50元,有些朋友感觉比较贵,不太愿意买,我们也是比较权衡了才很久 ...
- OC相机封装
AlbumService询问相机权限 AuthorizationService相机封装 plist文件设置: <key>NSCameraUsageDescription</key&g ...
- Postman教程
1.Postman的介绍 Postman是一款功能强大的用于发送 HTTP 请求的 Chrome插件 .做web页面开发和测试的人员应该都知道!其主要特点:创建 + 测试:创建和发送任何的HTTP请求 ...