一.
1.Properties extends Hashtable<K,V> ,它没有泛型,Key和Value都是String
表示一组持久的属性。 Properties可以保存到流中或从流中加载。
属性列表中的每个键及其对应的值都是一个字符串。
(1)可以使用Map的功能
put(K ,V)
遍历:
keySet()通用
(2)有自己特有功能添加元素和遍历
public Object setProperty(String key,String value):给属性列表中添加属性描述(key和value)
public Set<String> stringPropertyNames():获取属性列表中的所有的键
public String getProperty(String key):在属性列表中通过键获取值
public class PropertiesDemo {
public static void main(String[] args) {
//Properties() :空参构造
/**
* 推荐Properties作为集合类 的遍历方式
* public Object setProperty(String key,String value):给属性列表中添加属性描述(key和value)
* public Set<String> stringPropertyNames():获取属性列表中的所有的键
* public String getProperty(String key):在属性列表中通过键获取值
*/
//创建一个空的属性列表
Properties prop = new Properties() ;
prop.setProperty("张三","30") ;
prop.setProperty("李四","40") ;
prop.setProperty("王五","35") ;
prop.setProperty("赵六","45") ;
//遍历:
Set<String> set = prop.stringPropertyNames();//获取所有键
for(String key:set){
String value = prop.getProperty(key);
System.out.println(key+"---"+value);
}
}
}
二.
Propeties:键和值都是字符串类型:可能需要在src(类所在的路径:类路径)作为一个配置文件xxx.properties
需求:
有一个文本文件
username.txt
key1=value1
key2=value2
...
...
...
将文本文件中的内容读取到属性列表中Properties 加载
将字节输入流或者字符输入中所在的文件中的内容加载属性列表中
void load(Reader reader)
void load(InputSteram in)
将Properties里面存储的内容----->保存到某个目录的xxx配置文件中保存
public void store(Writer writer,String comments)
public void store(OutputStream out,String comments)
将属性列表中的内容保存到指定字节输出流/字符输出流所指向那个文件中
需求
将一个文本文件中属性,加载到属性集合列表(Properties)中,并将这些数据 ---->
保存到另一个文件中package Test; import java.io.*; import java.util.Properties; import java.util.Set; /** * @author LiangHaiBo * @version 1.0 * @date 2021.8.15 上午 10:40 */ public class CopyImages { public static void main(String[] args) throws IOException, ClassNotFoundException { // myStore();//存储 myLoad();//加载 } private static void myStore() throws IOException { Properties prop = new Properties(); prop.setProperty("张三丰","56") ; prop.setProperty("吴奇隆","60") ; prop.setProperty("成龙","65") ; prop.setProperty("刘德华","70") ; prop.store(new FileWriter("names.txt"),"name is list"); System.out.println("保存完毕!"); } private static void myLoad() throws IOException, ClassNotFoundException { Properties prop = new Properties(); System.out.println(prop); /*Reader r = new FileReader("names.txt"); prop.load(r); System.out.println(prop);*/ //读取src路径下的names.properties (类路径) //使用步骤 //(1)获取当前类所在的字节码文件对象 Class clazz = Class.forName("Test.CopyImages"); //(2)获取当前类所在的类加载器 ClassLoader classLoader = clazz.getClassLoader(); //(3)在类加载去中:获取当前资源文件所在的输入流对象 InputStream inputStream = classLoader.getResourceAsStream("names.properties"); //(4)将inputStream加载到属性集合类中 prop.load(inputStream); //遍历 Set<String> keySet = prop.stringPropertyNames(); for (String key : keySet) { String value = prop.getProperty(key); System.out.println(key+"="+value); } } }