0511-Properties集合
package A10_IOStream; import java.io.*;
import java.util.Properties;
import java.util.Set; /*
java.util.Properties集合 extends Hashtable implements Map<K,V>
Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。
Properties集合是一个唯一和流有关的集合
store方法把集合中的临时数据,持久化写入到硬盘中存储;load方法把硬盘中保存的文件(键值对)读取到集合中使用
void load(InputStream inStream)从输入流中读取属性列表(键和元素对)。
void load(Reader reader)按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。
void store(OutputStream out, String comments)以适合使用 load(InputStream) 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。
void store(Writer writer, String comments)以适合使用 load(Reader) 方法的格式,将此 Properties 表中的属性列表(键和元素对)写入输出字符。
属性列表中每一个键和值都是字符串:Properties集合是一个双列集合,key和value默认都是字符串
setProperty(String key, String value)调用 Hashtable 的方法 put。
getProperty(String key)用指定的键在此属性列表中搜索属性。
stringPropertyNames()返回此属性列表中的键集,其中该键及其对应值是字符串,如果在主属性列表中未找到同名的键,则还包括默认属性列表中不同的键。
*/
public class D06Properties {
public static void main(String[] args) {
method01();
} //Properties集合的存取
public static void method01() {
Properties prop = new Properties(); //创建集合
prop.setProperty("刘德华", "174cm");//添加元素
prop.setProperty("周润发", "180cm");
prop.setProperty("黎明", "178cm");
prop.setProperty("gril苏慧", "158cm");
Set<String> keys = prop.stringPropertyNames();//遍历读取集合
for (String key : keys) {
System.out.println(key + ":" + prop.getProperty(key));
}
/*使用store方法保存集合中的数据到硬盘文件中
OutputStream:字节流在保存中文时因使用的是Unicode编码导致显示编码非中文
Write:字符流可以正常处理中文
注意:流对象使用完需释放(匿名对象自动释放)
*/
// 字符流输出中文正常
try (FileWriter fw = new FileWriter("properties.txt");) { //这里使用了JDK7中try的新特性,流对象自动释放
prop.store(fw, "properties store test");
} catch (IOException e) {
System.out.println(e);
}
//字节流输出中文:gril苏慧=158cm 会输出为——> gril\u82CF\u6167=158cm
try (FileOutputStream fos = new FileOutputStream("propUnicode.txt");) {
prop.store(fos, "properties store with unicode");
} catch (IOException e) {
System.out.println(e);
} /*
可以使用Properites集合中的load方法,把硬盘中保存的键值对文件,读取加载到集合中
参数:
InputStream字节输入流,不能读取含有中文的键值对
Reader字符输入流,能读取含有中文的键值对
使用步骤:
1.创建Properties集合对象
2.使用集合的load方法读取键值对文件
3.遍历Properties集合
注意:在存储键值对的文件中
1.键与值的默认连接符号可以使用=,空格(其他符号)
2.可以使用#进行注释,被注释的键值对不会再被读取
3.键与值默认都是字符串,不用再加引号
*/
System.out.println("----华丽的分割线----");
Properties pps = new Properties();
try {
pps.load(new FileReader("properties.txt"));
Set<String> set = pps.stringPropertyNames();
for (String s : set) {
System.out.println(s + "=" + pps.getProperty(s));
}
} catch (IOException e) {
System.out.println(e);
}
//如果使用字节流文件,经测试也是可以正常输出(老师为什么说是会乱码呢???)
System.out.println("----华丽的分割线----");
Properties pps1 = new Properties();
try {
pps1.load(new FileInputStream("propUnicode.txt"));
Set<String> set = pps1.stringPropertyNames();
for (String s : set) {
System.out.println(s + "=" + pps1.getProperty(s));
}
} catch (IOException e) {
System.out.println(e);
}
}
}
0511-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集合方法都可以 ...
随机推荐
- AI运动小程序开发常见问题集锦二
截止到现在写博文时,我们的AI运动识别小程序插件已经迭代了23个版本,成功应用于健身.体育.体测.AR互动等场景:为了让正在集成或者计划进行功能扩展优化的用户,少走弯路.投入更少的开发资源,针对近期的 ...
- Python网络爬虫实践案例:爬取猫眼电影Top100
以下是一个Python网络爬虫的实践案例,该案例将演示如何使用Python爬取猫眼电影Top100的电影名称.主演和上映时间等信息,并将这些信息保存到TXT文件中.此案例使用了requests库来发送 ...
- Tensorflow 使用TPU训练
要用TPU训练tensorflow模型,只能使用静态图.也就是要先通过keras的sequential或者函数式定义模型,而不能直接使用重写的Model类.例子如下,其中包含层的自定义,以及子像素卷积 ...
- Ansible常用功能说明 [异步、并发、委托等]
文章目录 Ansible的同步模式与异步模式 Ansible的异步和轮询 [async.poll] Ansible的并发限制 [serial.max_fail_percentage] Ansible的 ...
- 基于 JUnit 的全局单元测试程序
在 Java 程序中,JUnit 是备受开发人员喜爱的单元测试工具.通常,程序员会对每个程序的每个模块写单元测试.对于小型程序来说,程序员只需要手工执行这些单元测试程序就可以,工作量并不大,但是对于中 ...
- KnowledgeManagement
知识管理建议 总则 总参 从无知到有知 资料收集的习惯 发表是最好的记忆 Wiki 使用 建议: Blog 写作 Discuss 搜索技巧 回复:Yibie的知识管理流程与工具选择 一.个人知识管理的 ...
- golang之项目部署
介绍 Go 语言可以使用内置命令行工具 go build 编译生成可执行文件.自 Go1.5 版本开始实现自举后,交叉编译也很方便,只需使用 GOOS.GOARCH 环境变量指定目标平台和架构. 部署 ...
- 销讯通CRM系统如何管理医药代表的销售过程
医药行业的销售代表与其他行业的销售代表在专业知识要求.客户群体.销售流程.以及行业特性等方面都存在明显的区别,他们必须具备更高的专业素养和综合能力. CRM(客户关系管理系统)在医药行业中对于管理医药 ...
- Reviewbot 开源 | 这些写 Go 代码的小技巧,你都知道吗?
Reviewbot 是七牛云开源的一个项目,旨在提供一个自托管的代码审查服务, 方便做 code review/静态检查, 以及自定义工程规范的落地. 自从上了 Reviewbot 之后,我发现有些 ...
- GooseFS 在云端数据湖存储上的降本增效实践
| 导语 基于云端对象存储的大数据和数据湖存算分离场景已经被广泛铺开,计算节点的独立扩缩容极大地优化了系统的整体运行和维护成本,云端对象存储的无限容量与高吞吐也保证了计算任务的高效和稳定.然而,云 ...