Properties 集合
- Map
- Hashtable
- Properties
- Hashtable
- 特点:
- 该集合中的键和值都是字符串类型
- 集合中的数据可以保存到流中, 或者从流中获取
- 应用:
- 通常该集合用于操作以键值对形式存在的配置文件
- 常用方法:
// 单个元素的存和取:
// 存元素
setProperty();
// 取元素
getProperty();
// 获取所有元素 (将 Map 集合转换成 Set 集合)
Set<String> stringPropertyNames(); // 返回此属性列表中的键集
// 示例:
public static void propertiesDemo(){
// 创建一个 Properties 的集合
Properties prop = new Properties();
// 存储元素, 注意, 键和值都是字符串
prop.setProperty("wangcai","22");
prop.setProperty("lisi","32");
prop.setProperty("zhangsan",35);
// 修改元素, 键相同, 值覆盖
prop.setProperty("lisi","14");
// 获取所有元素
Set<String> names = prop.stringPropertyNames();
for(String name:names){
String value = prop.getProperty(name);
System.out.println(name+":"+value);
}
}
Properties 集合和流对象相结合的方法
// list(PrintStream out);
public static void method(){
Properties prop = new Properties();
prop.setProperty("wangcai","18");
prop.setProperty("xiaoqiang","28");
prop.setProperty("zhaoliu","25");
prop.list(System.out); // 将集合信息打印到控制台
}
// 将 Properties 表中的属性列表写入到输出流:
// store(OutputStream out, String comments(属性列表的描述));
// store(Writer writer, String comments);
public static void method_1(){
Properties prop = new Properties();
prop.setProperty("wangcai","18");
prop.setProperty("xiaoqiang","28");
prop.setProperty("zhaoliu","25");
// 想要将这些集合中的字符串键值信息持久化存储到文件中
// 需要关联输出流
FileOutputStream fos = new FileOutputStream("info.txt");
// 将集合中数据存储到文件中, 使用 store() 方法
prop.store(fos,"name+age");
fos.close(); // 关闭流
}
// 将硬盘上已有的文件信息读取到 Properties 集合中
// load(InputStream in); 字节流
// load(Reader reader); 字符流
public static void method_2(){
Properties prop = new Properties();
// 集合中的数据来自与一个文件
// 注意: 必须要保证该文件中的数据是键值对
// 需要使用到读取流(字节流或字符流)
FileInputStream fis = new FileInputStream("info.txt");
// 使用 load() 方法
prop.load();
fis.close();
}
// 模拟实现 load() 方法
public static void MyLoad(){
Properties prop = new Properties();
BufferedReader bufr = new BufferedReader(new FileReader("info.txt"));
String line = null;
while((line=bufr.readLine())!=null){
// 将 info.txt 中的注释文件过滤出去
if(line.startsWith("#"))
continue;
// 使用 "=" 切割字符串
String[] arr = line.split("=");
// 存入 Properties 集合中
prop.setProperty(arr[0],arr[1]);
}
bufr.close();
}
// 示例二: 对已有的配置文件中的信息进行修改
/*
* 思路:
* 读取这个文件
* 将这个文件中的键值数据存储到集合中
* 通过集合对数据进行修改
* 在通过流将修改后的数据存储到文件中
*/
public static void test() throws IOException{
// 首先将文件封装成对象, 判断该文件是否存在
// 如果不存在, 则创建一个新的
File file = new File("info.txt");
if(!file.exists()){
file.createNewFile();
}
// 读取该文件, 流可以直接操作文件对象
FileReader fr = new FileReader(file);
// 将文件中的键值数据存储到集合中
Properties prop = new Properties();
prop.load(fr);
// 修改数据
prop.setProperty("zhaoliu","30");
// 将修改后的 Properties 存储到文件中
FileWriter fw = new FileWriter(file);
prop.store(fw,"changeName"); // 这是将 info.txt 中的内容全部覆写一遍
// 并不是仅仅修改了 zhaoliu
// store() 方法需要两个参数
fr.close();
fw.close();
}
参考资料
Properties 集合的更多相关文章
- 黑马程序员——【Java基础】——File类、Properties集合、IO包中的其他类
---------- android培训.java培训.期待与您交流! ---------- 一.File类 (一)概述 1.File类:文件和目录路径名的抽象表现形式 2.作用: (1)用来将文件或 ...
- Properties集合的练习
1.更改文件中的数据,特定键的值: 需求:我有一个文本文件(user.txt),我知道数据是键值对形式的,但是不知道内容是什么. 请写一个程序判断是否有"lisi"这样的键存在,如 ...
- java基础知识回顾之java集合类-Properties集合
/** java.lang.Object |--java.util.Dictionary<K,V> |--java.util.Hashtable<Object,Obje ...
- Properties集合
Map |--Hashtable |--Properties Properties集合特点: 1.该集合中的键和值都是字符串类型 2.集合中的数据可以保存在IO流中或者从IO流中获取数据. 通常该集合 ...
- -1-3 java集合框架基础 java集合体系结构 Collection 常用java集合框架 如何选择集合 迭代器 泛型 通配符概念 Properties 集合 迭代器
集合又称之为容器存储对象的一种方式 •数组虽然也可以存储对象,但长度是固定的:显然需要可变长度的容器 集合和数组的区别? A:长度区别 ...
- IO流--与properties集合配合使用
IO流--与properties集合配合使用: 注:生产上主要用于常量文件的配置,读取常量文件: 1:properties集合的放值与取值: /* * properties集合继承自hashTable ...
- Properties集合_修改配置信息
集合中的数据来自于一个文件 注意:必须要保证该文件中的数据是键值对. 需要使用到读取流 使用load()方法读取已有文件中的数据,存储到Properties集合中 public class Pro ...
- Properties集合_list方法与store方法
Properties集合和流对象结合的功能 list()方法: import java.util.Properties; public class PropertiesDemo { public st ...
- Properties集合概述与存和取
Properties集合:(Map集合下的Hashtable集合下的一个子类) 特点: 1.集合中的键和值都是字符串 2.集合中的数据可以保存到流中,或者从流中获取 该集合通常用于操作以键值对形式存在 ...
- Java中Properties集合总结
一:定义 表示一个持久的集,可以存在流中或者从流中加载.用来读取Java的配置文件,在Java中为.properties为后缀名的文本文件. 二:特点 是 Hashtable子类,map集合方法都可以 ...
随机推荐
- Atitit 插件机制原理与设计微内核 c# java 的实现attilax总结
Atitit 插件机制原理与设计微内核 c# java 的实现attilax总结 1. 微内核与插件的优点1 2. 插件的注册与使用2 2.1. Ioc容器中注册插件2 2.2. 启动器微内核启动3 ...
- Makefile 之 $(Q)
# To put more focus on warnings, be less verbose as default # Use 'make V=1' to see the full command ...
- binutils工具集之---objdump
在嵌入式软件开发中,有时需要知道所生成的程序文件中的段信息以分析问题,或者需要查看c语言对应的汇编代码,此时,objdump工具就可以帮大忙了.obj——object dump:转储. #inclu ...
- gcc,一个神奇的编译器
gcc是“GNU Compiler Collection”的缩写,从字面意思可以知道它是一个编译器集.gcc不止可以编译器c语言,还能用于c++,java,object-C等语言程序.但是在这里,我们 ...
- vim搜索设置高亮
vim搜索设置高亮 linux vim打开文档搜索字符串时,设置被搜索到字符串高亮显示. 有两种方法: 1.暂时设置:vim打开文档-->命令行形式输入set hlsearch. 缺点:关闭文档 ...
- InnoDB: auto-extending data file ./ibdata1 is of a different size 640 pages (rounded down to MB) than specified in the .cnf file: initial 768 pages, max 0 (relevant if non-zero) pages!
问题描述: centos 安装MySQL $yum install mysql-server 安装之后执行命令mysql 报错: 查看mysql的启动日志: [ERROR] InnoDB: auto- ...
- 在CentOS 7上利用systemctl添加自定义系统服务 /usr/lib/systemd/
在CentOS 7上利用systemctl添加自定义系统服务[日期:2014-07-21] 来源:blog.csdn.net/yuanguozhengjust 作者:yuanguozhengjust ...
- IO模型(阻塞、非阻塞、多路复用与异步)
IO模型 同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同环境下给出的答案也是不一的.所以先限定一下上下文是非常有必要的. 本文讨论的背景是Linux环境下的network I ...
- 第二百一十一节,jQuery EasyUI,ValidateBox(验证框)组件
jQuery EasyUI,ValidateBox(验证框)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 4.自定义验证 本节课重点了解 EasyUI 中 ValidateBox(验证框 ...
- Java IO系统
理论上,我们可将任何程序分割为三部分:输入.处理和输出.这意味着 IO(输入/输出)是所有程序最为关键的部分.在这一章中,大家将学习Java 为此提供的各种类,如何用它们读写文件.内存块以及控制台 等 ...