Properties 类的介绍

  Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。一个属性列表可包含另一个属性列表作为它的“默认值”;如果未能在原有的属性列表中搜索到属性键,则搜索第二个属性列表。因为 Properties 继承于 Hashtable,所以可对 Properties 对象应用 put 和 putAll 方法。但不建议使用这两个方法,因为它们允许调用者插入其键或值不是 String 的项。相反,应该使用 setProperty 方法。如果在“不安全”的 Properties 对象(即包含非 String 的键或值)上调用 store 或 save 方法,则该调用将失败。类似地,如果在“不安全”的 Properties 对象(即包含非 String 的键)上调用 propertyNames 或 list 方法,则该调用将失败。

Properties类的构造方法

Properties() 创建一个无默认值的空属性列表。
Properties(Properties defaults) 创建一个带有指定默认值的空属性列表。

Properties的使用

  由于Properties是Hashtable<Object,Object>的子类,我们可以将其看成是一个map集合,可以存储key-value键值对,只不过Properties希望你存储的都是字符串的键值,而且我们定义的时候不能定义泛型,因为默认希望你存储的都是<String,String>。但是由于其继承了Hashtable<Object,Object>的方法,我们也可以用put方法来put非String的键值。例如下面这几行代码是不会报错的:

    public static void main(String[] args) throws IOException {Properties p = new Properties();p.put(1111, 2222);p.setProperty("aaa", "1");p.setProperty("bbb", "2");p.setProperty("ccc", "3");System.out.println(p.getProperty("aaa"));System.out.println(p.get(1111));}

  但Properties区别于Hashtable的最精彩的功能是可以对接流。看如下几个方法:

 void    list(PrintStream out) 将属性列表输出到指定的输出流。void    list(PrintWriter out) 将属性列表输出到指定的输出流。void    load(InputStream inStream) 从输入流中读取属性列表(键和元素对)。void    load(Reader reader) 按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。void    loadFromXML(InputStream in) 将指定输入流中由 XML 文档所表示的所有属性加载到此属性表中。void    store(OutputStream out, String comments) 以适合使用 load(InputStream) 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。void    store(Writer writer, String comments) 以适合使用 load(Reader) 方法的格式,将此 Properties 表中的属性列表(键和元素对)写入输出字符。void    storeToXML(OutputStream os, String comment) 发出一个表示此表中包含的所有属性的 XML 文档。void    storeToXML(OutputStream os, String comment, String encoding) 使用指定的编码发出一个表示此表中包含的所有属性的 XML 文档。

就是说Properties可以对接流直接将Properties写出到文件或者加载到程序。例如下面的写入代码:

    public static void main(String[] args) throws IOException {Properties p = new Properties();Writer writer = new FileWriter("t.txt");p.setProperty("aaa", "1");p.setProperty("bbb", "2");p.setProperty("ccc", "3");p.store(writer,"set properties");w.close();System.out.println(p);}

最后文件t.txt中显示是这样子的:

#set properties
#Fri Dec 04 16:20:01 HKT 2015
bbb=2
aaa=1
ccc=3

当然,也可以通过load方法将属性load进来:

    public static void main(String[] args) throws IOException {Properties p = new Properties();Reader reader = new FileReader("t.txt");p.load(reader);     r.close();System.out.println(p.getProperty("aaa"));System.out.println(p);}

转载于:https://www.cnblogs.com/gslyyq/p/5019665.html

【Java基础】Java中的持久属性集Properties相关推荐

  1. java props_spring:使用prop标签为Java持久属性集注入值

    spring:使用标签为Java持久属性集注入值 使用 spring 提供的为Java持久属性集注入值,也就是向 java.util.Properties 对象中注入值. 是简化了的 ,该元素对应配置 ...

  2. Java笔记整理六(File类,递归,字节流IO,字符流IO,流中的异常处理,属性集Properties,缓冲流,转换流,序列化,打印流)

    1.File类 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 文件和目录路径名的抽象表示 java把文件和文件夹封装位为一个File类,我们可 ...

  3. Java基础-JAVA中常见的数据结构介绍

    Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...

  4. Java基础-Java中常用的锁机制与使用

    Java基础-Java中常用的锁机制与使用 锁lock或互斥mutex是一种同步机制,主要用于在存在多线程的环境中强制对资源进行访问限制.锁的主要作用为强制实施互斥排他以及并发控制策略.锁一般需要硬件 ...

  5. Java基础-Java中的堆内存和离堆内存机制

    Java基础-Java中的堆内存和离堆内存机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 转载于:https://www.cnblogs.com/yinzhengjie/p/9 ...

  6. Java基础-Java中的内存分配与回收机制

    Java基础-Java中的内存分配与回收机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一. 二. 转载于:https://www.cnblogs.com/yinzhengji ...

  7. [重学Java基础][Java IO流][Exter.2]IO流中几种不同的读写方法的区别

    [重学Java基础][Java IO流][Exter.2]IO流中几种不同的读写方法的区别 Read 读入方法 read(): 一般是这种形式 public int read() 1.从流数据中读取的 ...

  8. Java基础----Java编程语言概述

    Java基础----Java编程语言概述 文章目录 Java基础----Java编程语言概述 Java编程语言概述 1-1 软件开发介绍 1.1软件开发介绍 1.2 常用命令 1-2 计算机编程语言介 ...

  9. Java基础——Java多继承的三种实现方式

    Java基础--Java"多继承"的三种实现方式 Java语言本身只支持单继承(每个类只能有一个父类),但单继承的局限性很大,因此,可以通过以下的方式实现"多继承&quo ...

最新文章

  1. Nginx入门到实战(4)常见问题
  2. 基于云的SD-WAN骨干接入服务
  3. 真执着 卡巴斯基和Palo Alto找到了BlackEnergy和ExPetr的相似代码
  4. LOJ-10096(强连通+bfs)
  5. Python 总结题目
  6. P2651 添加括号III(python3实现)
  7. [php]php设计模式 Bridge (桥接模式)
  8. 明了 | 看了这篇文章,多年不能理解的分布式事物,终于看懂了!
  9. 外媒:苹果首款AR/VR设备需与iPhone绑定使用,最早明年发布
  10. linux16.04下安装Clion2019.2记录以及C++代码运行
  11. Java同步—线程池的创建和使用
  12. Java反射机制获取当前类名
  13. 图片旋转_系统自带画图程序,图片旋转翻转调整大小修改转换格式图文教程
  14. 怎样在 linux 系统下增加一块硬盘
  15. 强化狼群等级制度的灰狼优化算法-附代码
  16. 基于STM32音频频谱分析设计方案
  17. 如何实现一个漂亮的微信小程序朋友圈、表白墙、校内圈(后台篇)
  18. ios和android下数字没有垂直居中,手机端设置小号字体的上下居中问题
  19. QT报错:Gtk-Message:Failed to load module “gail“
  20. BaiduOCR实现身份证,银行卡,机动车牌,图像审核等识别

热门文章

  1. linux下java命令行参数_Java调用Linux命令行
  2. 服务器优化:Tomcat、JVM性能调优笔记
  3. ubuntu mysql 内存满了_Ubuntu mysql可以把data防止到内存盘中
  4. php多个构造方法,php多构造器的实例代码
  5. Oracle取最大/最小值函数
  6. 面试官问:跨域请求如何携带cookie?
  7. 裂墙推荐!再也不用求后端给接口了...
  8. openfiler的iSCSI配置(二)
  9. Python--day60--一个简单(不完整)的web框架
  10. opencv python 图像缩放/图像平移/图像旋转/仿射变换/透视变换