Jar中的Java程序如何读取Jar包中的资源文件


比如项目的组织结构如下(以idea中的项目为例):

|-ProjectName

|-.idea/  //这个目录是idea中项目的属性文件夹

|-src

|-com.zzl   //自己开发的类在这个包下

|-config.xml //自己的配置文件

|-target //这个目录是项目编译之后产生的输出文件夹

|-classes  //自己写的类编译之后产生的class文件,会存放到这个文件夹下

|-com/zzl   //自己写的类编译之后的包

|-config.xml //src下的config.xml配置文件被编译之后会到target/classes下

|-ProjectName.jar  //项目打包之后的jar文件

|-ProjectName.iml  //idea项目中的模块属性文件

|-pom.xml  //项目的pom文件

项目结构如上,src下放着config.xml配置文件,要在com/zzl/包下的程序中读取config.xml的时候,应该像下面的例子中所示的,去指定config.xml的路径。

当把项目打成jar包发布后,jar中的方法就不能通过File file=new File("文件路径")的方式来读取打包到jar中的文件了,需要用如下方法:

public static String getJarFile()throws IOException 
{
  InputStream in=Test.class.getResourceAsStream("/config.xml");//读jar包根目录下的config.xml文件
  Reader reader = new InputStreamReader(in);
  BufferedReader bufferedReader = new BufferedReader(reader);
  StringBuffer strBuilder = new StringBuffer("");
  String line = "";
  while((line = bufferedReader.readLine()) != null)
  {
    strBuilder = strBuilder.append(line);
  }   return strBuilder.toString();
}

用上面的方法可以读到config.xml中的内容。

该方法同样适用于项目中读取文本文件。

如果要读取的文件放在src目录下的子目录中,比如src/config/config/xml,那么编译之后,config.xml文件会出现在target/classes/config/config.xml。打包之后config.xml文件会在jar包的根目录下的config/config.xml中,所以在程序指定目录的时候应该用/config/config.xml的方式去指定,才能保证正确读取。

Jar中的Java程序如何读取Jar包中的资源文件的更多相关文章

  1. 用命令行将Java程序打包为jar文件

    如何把写好的Java程序打包为jar文件呢?有两种方式可以选择 1.命令行的方式: 打包jar cf JAR文件名称 程序文件名称或者程序所在的文件夹举例:jar cf MyApp.jar D:Jav ...

  2. 如何创建JAR文件?如何运行.jar形式的Java程序?

    一.如何创建JAR文件? .jar是用来压缩档案或者解压档案的文件格式,其特点是具有无损压缩的功能.想知道如何创建这种程序?请访问 http://www.cnblogs.com/yjmyzz/p/ex ...

  3. Java程序导出成.jar文件、生成.exe可执行文件及打包成可执行安装程序(可在无Java环境的计算机上运行)--以个人所得税计算器为例

    Java程序导出成.jar文件.生成.exe可执行文件及打包成可执行安装程序 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 需要准备的软件: jdk, ...

  4. Java-Servlet--《12-WEB应用中的普通Java程序如何读取资源文件.mp4》 有疑问

    \第五天-servlet开发和ServletConfig与ServletContext对象\12-WEB应用中的普通Java程序如何读取资源文件.mp4; 多层时,DAO为了得到资源文件中的配置参数: ...

  5. centos7中配置java + mysql +jdk +使用jar部署项目

    centos7中配置java + mysql +jdk  +使用jar部署项目 思维导图 1. 配置JDK環境 1.1下载jdk安装包 Java Downloads | Oracle 1.2 将下载j ...

  6. WEB应用中普通java代码如何读取资源文件

    首先: 资源文件分两种:后缀.xml文件和.properties文件 .xml文件:当数据之间有联系时用.xml .properties文件:当数据之间没有联系时用.properties 正题:   ...

  7. cmd 窗口中运行 Java 程序

    1.CMD 命令提示符(Command Processor)(CMD) CMD命令:开始->运行->键入 cmd(在命令行里可以看到系统版本.文件系统版本) 2.对文件夹操作的部分命令 启 ...

  8. 在dos中运行java程序,若出现Exception in thread “main" java.lang.NoClassDefFoundError

    在dos中运行java程序,若出现Exception in thread “main" java.lang.NoClassDefFoundError,可以检查一下几项: 环境变量配置: 注意 ...

  9. HTML文件中使用Java程序

    HTML文件中使用Java程序:简而言之,在HTML文件中引入java应用程序,并通过javascript调用其方法.   一. 运行环境 1.JAVA_HOME.CLASSPATH.PATH配置正确 ...

随机推荐

  1. Java基础学习-extends继承(成员变量,局部变量,成员方法)

    package extend; /*面向对象-继承: * 多个类的共同成员变量和成员方法.抽取到另一个类中(父类),我们多个类就可以访问到父类的成员了 * */ class Game{ String ...

  2. 关于bind named.conf.options

    /etc/named/named.conf.options中的Options参数   listen-on port 53 { any; }; 监听在这部主机系统上面的哪个网路介面.预设是监听在loca ...

  3. 【SQL查询】查询结果翻译成其他值_decode

    decode()函数简介: 主要作用:将查询结果翻译成其他值(即以其他形式表现出来,以下举例说明): 使用方法: Select decode(columnname,值1,翻译值1,值2,翻译值2,.. ...

  4. 微信小程序调微信支付

    今天写小程序的支付接口,参照的当然是微信支付API了.(结尾附上第二步全部代码php版) 另外,我也参照了简书上的这篇文章,浅显易懂:https://www.jianshu.com/p/72f5c1e ...

  5. Http权威指南(概述篇总结)

    之前的<锋利的jQuery>后面陆续翻完了,实在觉得没什么值得记录的,也就没继续写了,然后看见书架上有 本去年买的<Http权威指南>,其实做web编程的,对于Http协议还是 ...

  6. 《Drools7.0.0.Final规则引擎教程》第2章 追溯Drools5的使用

    2.1 Drools5简述 上面已经提到Drools是通过规则编译.规则收集和规则的执行来实现具体功能的.Drools5提供了以下主要实现API: KnowledgeBuilder Knowledge ...

  7. 官方:MySQL 5.7 并行复制实现原理与调优 | InsideMySQL(转载)

    MySQL 5.7并行复制时代 众所周知,MySQL的复制延迟是一直被诟病的问题之一,然而在Inside君之前的两篇博客中(1,2)中都已经提到了MySQL 5.7版本已经支持“真正”的并行复制功能, ...

  8. 剑指Offer面试题:8.二进制中1的个数

    一 题目:二进制中1的个数 题目:请实现一个整数,输出该数二进制表示中1的个数.例如把9表示成二进制是1001,有2位是1.因此如果输入9,该函数输出2. 二 可能引起死循环的解法 // 计算整数的二 ...

  9. 使用nagios插件 check_mysql_health 过程中遇到的error

    使用nagios插件 check_mysql_health 过程中遇到的error 1.如果在运行监控mysql插件的时候遇到了error安装以下依赖包就可以解决: yum install perl- ...

  10. GitFlow在客户端Sourcetree的使用

    安装 Sourcetree中直接集成了gitflow工具,可以在界面上找到  初始化 首次按下Git Flow按钮后,会弹出如图窗口  初始化会规定几个特殊的分支名称 生产环境分支:master 开发 ...