38.Properties

本文介绍了Java中Properties类的使用,包括如何通过setProperty添加属性,通过stringPropertyNames获取键,getProperty获取值来遍历属性列表。此外,还展示了如何从文件加载Properties以及将Properties内容保存到文件的方法。示例代码演示了如何读取和存储文本文件中的属性数据。
摘要由CSDN通过智能技术生成

一.

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);

        }
    }
}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值