---恢复内容开始---

昨天在做项目插件的时候,因为会用到jar包中的一个文件来初始化程序。并且以后还是会访问这个文件,所以就想到干脆吧文件拷贝到指定目录。在拷贝的时候也费了好一会时间,这里涉及到了jar文件的操作,在这里记下来以后有用到的时候方便查找

  1. 如果jar中还存在jar包或者其他压缩包,则使用这种方式读取
    1.  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();
      }
      }
  2. 如果要读取的文件在jar包中不是以压缩包或jar的形式存在,用下面的方式方便点
    1.  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的更多相关文章

  1. 【解惑】深入jar包:从jar包中读取资源文件

    [解惑]深入jar包:从jar包中读取资源文件 http://hxraid.iteye.com/blog/483115 TransferData组件的spring配置文件路径:/D:/develop/ ...

  2. (转)java 从jar包中读取资源文件

    (转)java 从jar包中读取资源文件 博客分类: java   源自:http://blog.csdn.net/b_h_l/article/details/7767829 在代码中读取一些资源文件 ...

  3. 深入jar包:从jar包中读取资源文件getResourceAsStream

    一.背景 我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等). 在单独运行的时候这些简单的处理当然不会有问题.但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不 ...

  4. 从jar包中读取资源

    package myspider; import java.io.UnsupportedEncodingException; /** * * @author mark */ public class ...

  5. java 从jar包中读取资源文件

    在代码中读取一些资源文件(比如图片,音乐,文本等等),在集成环境(Eclipse)中运行的时候没有问题.但当打包成一个可执行的jar包(将资源文件一并打包)以后,这些资源文件找不到,如下代码: Jav ...

  6. jar包的读取

    昨天在做项目插件的时候,因为会用到jar包中的一个文件来初始化程序.并且以后还是会访问这个文件,所以就想到干脆吧文件拷贝到指定目录.在拷贝的时候也费了好一会时间,这里涉及到了jar文件的操作,在这里记 ...

  7. 将properties文件放在Jar包并读取

    有时候需要在一个library内部打包一个properties文件,包含一些配置信息,而不能部署在外部. 在maven工程里面,将properties文件放在src/main/resources目录下 ...

  8. [Java基础] 深入jar包:从jar包中读取资源文件

    转载: http://hxraid.iteye.com/blog/483115?page=3#comments 我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的 ...

  9. JAR包中读取资源文件

    我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的处理当然不会有问题.但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了.看看 ...

随机推荐

  1. CMSampleBufferRef转换

    参考链接:https://blog.csdn.net/shenyi0106/article/details/47004039 https://blog.csdn.net/jeffasd/article ...

  2. [cloud][OVS][sdn] Open vSwitch 初步了解

    What is Open vSwitch? Open vSwitch is a production quality, multilayer virtual switch licensed under ...

  3. [development][libconfig] 配置文件库

    以前,一直用ini的配置文件. 简单清晰但是不灵活. 换一个: 试试libconfig 主页:  http://www.hyperrealm.com/oss_libconfig.shtml githu ...

  4. 使用Dom4j的xPath解析xml文件------xpath语法

    官方语法地址:http//www.w3school.com.cn/xpath/index.asp xpath使用路径表达式来选取xml文档中的节点或节点集.节点是通过沿着路径(path)或者步(ste ...

  5. Java之旅_高级教程_Java Mysql连接(1)

    工具:Eclipse .mysql5.7 MySQL连接驱动:mysql-connector-java-5.1.27.jar    获取地址:https://dev.mysql.com/downloa ...

  6. 知乎改版api接口之scrapy自动登陆

    最近使用scrapy模拟登陆知乎,发现所有接口都发生变化了,包括验证码也发生了很大变化,通过抓包分析,记录下改版后的知乎模拟登陆,废话不多说,直接上代码,亲测有效 # -*- coding: utf- ...

  7. Java如何对List集合的操作方法(二)

    4.list中查看(判断)元素的索引: 注意:.indexOf(): 和  lastIndexOf()的不同:   ///*************************************** ...

  8. 洛谷P1966 火柴排队 贪心+离散化+逆序对(待补充QAQ

    正解: 贪心+离散化+逆序对 解题报告: 链接在这儿呢quq 这题其实主要难在想方法吧我觉得?学长提点了下说用贪心之后就大概明白了,感觉没有很难 但是离散化这里还是挺有趣的,因为并不是能很熟练地掌握离 ...

  9. PyCharm 常用习惯设置

    1.pycharm改变选中行时改行的颜色和光标所在行的颜色 1.是光标所在行的背景颜色,写代码,每写到这一行,就会是这种颜色,所以尽量改成和你代码背景颜色相近的 2.应该是旁边行号所在背景颜色 3.是 ...

  10. 字符集更改步骤,mysql乱码

    关键字:Mysql乱码,mysql字符集修改 #字符集更改步骤~