背景介绍

    在java程序中有时我们需要加载项目中的某些资源文件(如:config.properties之类),以便获取里面的值,这样可以避免某些需要经常修改的数据硬编码入业务程序中

实现方式

    实现这种方式需求其实有很多种方式,下面简单介绍三种,各陈利弊:

  • 第一种   
     ClassLoader classLoader = this.getClass().getClassLoader();
     Properties prop = new Properties();
     prop.load(classLoader.getResourceAsStream("/Application.properties"));
     prop.get("");//通过此方法获取文件中的值
  弊端
    会发现修改了.properties后,即使重新执行,读入的仍为修改前的参数。此问题的原因在于ClassLoader.getResourceAsStream读入后,会将.properties保存在缓存中,重新执行时会从缓存中读取,而不是再次读取.properties文件
  • 第二种   
     Properties prop = new Properties();
    InputStream is = new FileInputStream(绝对路径);
    prop.load(is);
    prop.get("");//通过此方法获取文件中的值
  弊端:
  此时,FileInputStream不会将.properties保存在缓存中,可以解决上面的问题。但是出现了另一个问题,即绝对路径,会导致程序的通用性不好。这个问题是由于ClassLoader.getResourceAsStream是直接寻找 classes下的文件,FileInputStream则需要用完整的绝对路径,至于FileInputStream为什么一定需要绝对路径自己去找度娘,不在这里累述
  • 第三种
    Properties prop = new Properties();
    String path = Thread.currentThread().getContextClassLoader().getResource("/config").getPath();//只需从资源文件包下的路径写起即可,例如:这里是src/main/resource/config下的文件,所以我就只写了/config
    InputStream is = new FileInputStream(path + "/abutment.properties");
    prop.load(is);
    String httpConnect = ConvertUtil.obj2str(prop.get("httpConnect"));    

  这种方法可以很好解决上面两种问题,是目前比较优的选择

java之获取资源文件的更多相关文章

  1. java基础知识3--如何获取资源文件(Java中获取资源文件的url)

    java开发中,常见的resource文件有:.xml,.properties,.txt文件等,后台开发中经常用到读取资源文件,处理业务逻辑,然后返回结果. 获取资源文件的方法说明getResourc ...

  2. Java中获取资源文件的方法总结

    这里总结3中方法获取资源文件的 ServletContext Class ClassLoader 文件的位置 1. ServletContext public void doGet(HttpServl ...

  3. Web应用中的普通java程序获取资源文件

  4. java 中获得 资源文件方法

    1 java 中获取资源文件的方法 项目目录如下 获取当前项目的目录路径 方法一:使用类名 MergeDocHandler.class.getClassLoader().getResource(&qu ...

  5. 【Spring】获取资源文件+从File+从InputStream对象获取正文数据

    1.获取资源文件或者获取文本文件等,可以通过Spring的Resource的方式获取 2.仅有File对象即可获取正文数据 3.仅有InputStream即可获取正文数据 package com.sx ...

  6. JavaWeb基础: 获取资源文件

    Web工程在编译构建完毕以后,需要部署到Tomcat上运行,资源的硬盘路径也会随着改变.要想对资源文件进行读写操作需要获取其硬盘地址,在Web工程中通常通过ServletContext/ClassLo ...

  7. 关于获取资源文件,Class.getResource和ClassLoader.getResource的区别

    原文同步发表至个人博客[夜月归途] 原文链接:http://www.guitu18.com/se/java/2019-02-22/29.html 作者:夜月归途 出处:http://www.guitu ...

  8. 【spring Boot】spring boot获取资源文件的三种方式【两种情况下】

    首先声明一点,springboot获取资源文件,需要看是 1>从spring boot默认的application.properties资源文件中获取 2>还是从自定义的资源文件中获取 带 ...

  9. wpf 前台获取资源文件路径问题

    1 <ImageBrush ImageSource="YT.CM.CommonUI;component/Resource/FloadwindowImage/middle.png&quo ...

随机推荐

  1. git push origin master和git push有什么区别?

    1.master是主分支,还可以建一些其他的分支用于开发.2.git push origin master的意思就是上传本地当前分支代码到master分支.git push是上传本地所有分支代码到远程 ...

  2. Qt 密码框不可选中、复制、粘贴、无右键菜单等

    在做用户登录.修改密码的时候,往往会用到密码框,其中一些功能要求与普通的输入框不同. 例如:不能选中.复制.粘贴.无右键菜单等功能,当然设置密码不可见是必须的! 一般的密码框:(默认 可以选中,复制, ...

  3. spring 手动添加 bean 到容器,例子 :多数据源配置

    package com.thunisoft.spsjsb.config.db.decrypt; import com.alibaba.druid.pool.DruidDataSource; impor ...

  4. precision scale

    precision意为“精密度.精确”(精度),表示该字段的有效数字位数了. scale意为“刻度.数值范围”(),表示该字段的小数位数. 举个简单的例子 123.45:precision = 5 , ...

  5. mysql设置对外访问

    报错:Host is not allowed to connect to this MySQL server解决方法 先说说这个错误,其实就是我们的MySQL不允许远程登录,所以远程登录失败了,解决方 ...

  6. iOS mac终端下的SQL语句

    本文转载至 http://blog.csdn.net/majiakun1/article/details/41281801 我们都知道数据库的创建可以借助图形化的数据库工具软件,但也可以在Mac终端下 ...

  7. [原]openstack-kilo--issue(二十)External network cannot is not reachable associate Port

    issue==== INFO neutron.api.v2.resource [req-79a36d02-114b--b9ed-0a10c6d69451 ] update failed (client ...

  8. linux环境变量配置,转载地址:http://blog.sina.com.cn/rss/1650981242.xml

    学习总结 1.Linux的变量种类按变量的生存周期来划分,Linux变量可分为两类:1.     永久的:需要修改配置文件,变量永久生效.2.     临时的:使用export命令行声明即可,变量在关 ...

  9. vs2017默认以管理员运行

    1. 打开VS的安装目录,找到devenv.exe,右键,选择“兼容性疑难解答”. 2. 选择“疑难解答程序” 3. 选择“该程序需要附加权限” 4. 确认用户帐户控制后,点击测试程序,不然这个对话框 ...

  10. win怎么设置最快捷的下滑关机

    win怎么设置最快捷的下滑关机 1.在C:\Windows\System32下找到SlideToShutDown.exe文件发送一份到桌面快捷方式 2.右键此快捷方式--属性--更换图表--更换一个自 ...