我们在开发软件项目时,经常需要读取项目的一些配置数据。例如,项目里用到的数据库链接地址、Tomcat服务端口号、数据文件备份地址等信息都需要放到一个配置文件里,由程序读取并获取。这样做的好处是,当需要改变数据库连接地址、Tomcat服务端口号、数据文件备份地址等信息时,不需要修改代码,只需要修改配置文件内容就可以了。

Map接口还有一个重要的实现类Properties类,主要用于读取Java的配置文件,配置文件中很多变量是经常改变的,用于满足不同的项目部署环境要求。

1、Properties类 的构造函数

Properties 提供了二个常用的构造函数,说明如下:

● Properties ()

使用该构造函数,创建一个空的属性列表,没有默认值。

● Properties (Properties defaults)

使用该构造函数,创建一个空的属性列表,具有指定的默认值。

2、Properties类 的属性存取

同其它Map接口实现类一样,Properties类也提供了get和put方法用于元素的存取。但不建议使用这两个方法,因为这两个方法允许调用者插入其键或值不是 String 的数据,应该使用 setProperty和getProperty方法。

● Object setProperty (String key, String value)

该方法用于在属性列表中添加一个属性项,如果key指定的属性项已存在,则修改该属性项。

● String getProperty (String key)

该方法用于获取指定key的属性值。

Properties类属性存取示例代码如下:

程序实例化对象Properties,并调用setProperty方法添加了ip、port、name、psw四个属性项。然后,调用getProperty方法获取属性值。程序输出结果如下图所示:

Properties类主要用于配置文件的读取和修改,需要将属性写入到配置文件中,或者从配置文件读取属性。Properties类也提供了配置文件的存取方法。

1、Properties类 的配置文件的读取

● void load(Reader reader) throws IOException

该方法用于从输入字符流中读取属性列表,因为该方法会抛出IO异常,因此在调用此方法时,应使用try-catch语句捕获IO异常。

● void save(Writer writer, String comments) throws IOException

该方法将当前属性列表写入到输出字符流中,因为该方法会抛出IO异常,因此在调用此方法时,应使用try-catch语句捕获IO异常。

Properties类配置文件存储示例代码如下:

程序代码与上例程序的代码基本相同,不同的是添加了保存属性列表到database.xml的语句。写入的database.xml文件内容如下图所示:

database.xml配置文件内容

从上图看出,例子代码创建的属性项都已写入配置文件。唯一的问题是第一行显示了乱码,乱码内容是在调用store方法存储配置文件时传入的注释内容“数据库配置属性”,建议在写配置文件时尽量不要使用中文内容。

Properties类配置文件读取示例代码如下:

程序调用load方法读取上例中创建的配置文件,然后调用propertyNames方法获取属性项枚举集合,最后遍历枚举集合输出属性项。程序输出结果如下图所示:

ReadPropertiesDemo输出结果

从上图可以看出,程序正确输出了所读配置文件的属性项。

■ 知识点拨

Properties类表示了一个持久的属性集,它可保存在流中或从流中加载,属性列表中每个键及其对应值都是一个字符串。Properties类一般用于项目配置文件的存取。

java tomcat 读取配置文件端口_跟我学Java编程—应用读写项目配置文件的Properties类...相关推荐

  1. java c++ python哪个好_程序员学java好还是python语言好 c++又如何

    技术程序员学Java.C++.Python... 分析对比,到底学什么语言吃香,哪种语言最靠谱,如何学好这些语言呢? 几天前,我们在知识上看到这样一个问题:"java,C++,Python, ...

  2. java 正负号数值比较_从零学java笔录-第10篇 数据类型(四)

    从零学java笔录-第10篇 数据类型(四) 凯哥Java 凯哥java 本文是<凯哥陪你学系列之java基础篇> 感谢: 感谢网友:志远162.在上一篇中对错误指出. 在上篇中模运算正负 ...

  3. java 后端开发好吗_后端开发学Java好还是学c++好呢?

    C++与 java 的抉择 为了找工作:选Java. 为挑战自我:选C++. 很多人都说会C++就能会快掌握Jave.C++是不好学,但是我告诉你java也不好学.C++难是难在语言本身,java难是 ...

  4. java女程序员工作_女生适合做java程序员吗 女java程序员好找工作

    女生适合做java程序员吗 女java程序员好找工作?随着IT行业的飞速发展,程序员越来越受到重视,一些性格比较强势的女生,就也想加入到Java程序员的行列,因为他们感觉女生做这样的事情不会比男生差, ...

  5. 学java编程语言_为什么要学Java编程语言?

    Java是一门面向对象编程语言,具有功能强大和简单易用两个特征. Java编程语言因为自己独特的特性,成为很多编程入门者的首选编程学习语言,原因有以下几点: 1. 世界第一编程语言 自2002年起,历 ...

  6. 2020年Java开发前景还好吗?现在学java好找工作吗?

    2020年Java开发前景还好吗?现在学java好找工作吗?下面就跟着小编一起来看看吧! Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言.Java 技术具有卓越的通用性.高效性.平台移植 ...

  7. Java多线程读取excel文件_解决springboot 多线程使用MultipartFile读取excel文件内容报错问题...

    springboot项目开启多线程 启动类加注解开启 @EnableAsync,实现类方法加注解 @Async 前端页面 报错信息 java.io.FileNotFoundException: C:\ ...

  8. java 多线程监听同一个端口_使用多线程在Java服务器中同时侦听两个端口

    我正在构建一个简单的Java服务器,该服务器使用两个ServerSocket实例同时在两个端口上同时侦听客户端请求.这是服务器的代码: import java.io.PrintWriter; impo ...

  9. java 启动进行并命名_如何解决这个“java.io.IOException:不能重命名原始文件”启动tomcat 5.5时?...

    java.io.IOException: Cannot rename original file to C:\Program Files\Apache Software Foundation\Tomc ...

最新文章

  1. 导致SEO优化排名不理想的三大因素,你踩雷了没?
  2. Scala模式匹配,case 字符串,case 匹配类型,case 匹配数组,case 匹配List,case 匹配元组,case匹配case class和case object
  3. animiz动画制作软件_AN动画制作软件
  4. mysql数据库业务逻辑_Mysql业务设计(逻辑设计)
  5. 30天提升技术人的写作力-第二十三天
  6. 【VBA】获取当前工作表的用户名
  7. 嵌入式开发——常见的存储器分类和特性介绍
  8. 谷歌推出人肉搜索引擎
  9. 【开发日常】手动安装fastboot驱动(开发板连不上minitool)
  10. 百度地图添加家的位置图文教程
  11. easycode小帮手
  12. Tcl/Tk string详解
  13. 各种假期用英语的表达
  14. 微信支付,“签名错误,请检查后再试” 的坑爹经历
  15. 硅谷创业教父保罗·格雷厄姆给的创业建议书
  16. Chapter7.1:频域分析法理论基础
  17. uniapp 自定义easycom
  18. STM32 F767控制舵机
  19. winformbutton边框怎么改_winform设置button的边框颜色,或取消边框颜色,不显示边框...
  20. java获取上级菜单_java在多菜单中返回上级菜单如何实现

热门文章

  1. java.lang.UnsupportedClassVersionError: JVMCFRE003解决方法--jdk 1.6 中switch的参数无法使用String类型
  2. WSDM2022 | 数据困境: 我们究竟有多了解推荐系统数据集?(附视频、论文及代码)...
  3. 【报告分享】2020“后浪”消费图鉴.pdf(附下载链接)
  4. 【报告分享】万达文旅项目新媒体营销操作手册.pdf(附下载链接)
  5. 【报告分享】阿里妈妈:熬夜真相-0点经济报告.pdf(附下载链接)
  6. python程序中的内存泄露(matplotlib内存泄漏)
  7. php注册表单处理,PHP登录和注册表单错误处理
  8. Java基础(五)——泛型
  9. 吴恩达机器学习(一)单变量线性回归(假设函数、代价函数、梯度下降)
  10. htmlcss面试笔记