java 中的 properties

Properties 类 (为了方便内存中的数据持久化)

····最常用于java的配置文件

配置文件

(注意路径,如果不是在src目录下,请勿使用classload加载)


image.png




继承hashTable (和Map的底层原理相同)
最常用于,存储集合
以key=value 的 键值对的形式进行存储值。 key值不能重复。

获取jvm相关信息

 /**获取jvm的相关信息*/
    private static void showJVMinfo() {
        Properties ps = System.getProperties();
        for (String s : ps.stringPropertyNames()) {
            System.out.println(s+"="+ps.getProperty(s));
        }
    }
package ProPerties;

import java.io.*;
import java.util.Properties;
import java.util.Set;

/**
 * Created by kumamon on 2021/5/27.
 *
 * 为了数据持久化
 *
 * android的SystemProperSties 就是这种
 *
 * 和 map 一样,以 键 值 对的方式存储数据
 *
 */
public class PropertiesDemo {

    public static void main(String[] args) throws IOException {
        Properties properties=new Properties();
        set(properties);
        get(properties);


        write(properties);
        reader();


        //showJVMinfo();

    }


    /**获取jvm的相关信息*/
    private static void showJVMinfo() {
        Properties ps = System.getProperties();
        for (String s : ps.stringPropertyNames()) {
            System.out.println(s+"="+ps.getProperty(s));
        }
    }

    /**
     * 以键值对的方式存储
     * 和map相同
     *
     * @param ps*/
    private static void set(Properties ps) {

        ps.setProperty("迪丽热巴","18");
        ps.setProperty("古力娜扎","17");
        ps.setProperty("马尔扎哈","10");
        ps.setProperty("赵丽颖","18");
    }


    /**
     * 获取Properties的数据*/
    private static void get(Properties ps) {
        String dlrb = (String) ps.getProperty("迪丽热巴");
        System.out.println(dlrb);   //18

        String unkown = (String) ps.getProperty("迪丽热巴1","没有数据");
        System.out.println(unkown);  //没有数据


        Set strings = ps.stringPropertyNames();


        /**
         *
         key=赵丽颖  值=18
         key=古力娜扎  值=17
         key=马尔扎哈  值=10
         key=迪丽热巴  值=18

         * */
        for (String s : strings) {
            System.out.println("key="+s+"  值="+ps.getProperty(s));
        }
    }



    /**
     * 持久化,将内存中的数据存储到 硬盘中
     *
     ps.store(fileWriter,""); 第二个参数为解释说明,中文会乱码 一般不写
     赵丽颖   18
     古力娜扎  17
     马尔扎哈  10
     迪丽热巴  18
     存储到 Test.prop中

     *
     * @param ps*/
    private static void write(Properties ps) throws IOException {
        FileWriter fileWriter =new FileWriter("E:\\Java_demo\\demo01\\src\\ProPerties\\Test.prop");
        ps.store(fileWriter,"");

        //以xml格式存储,只能使用字节流
        ps.storeToXML(new FileOutputStream("E:\\Java_demo\\demo01\\src\\ProPerties\\Test.xml"), "");
    }




    /**
     * 读取Test.prop中的数据
     * */
    private static void reader() throws IOException {
        FileReader fileReader=new FileReader("E:\\Java_demo\\demo01\\src\\ProPerties\\Test.prop");

        Properties properties=new Properties();
        properties.load(fileReader);

        for (String s : properties.stringPropertyNames()) {
            System.out.println("由Test.prop读取"+s+"="+properties.getProperty(s));
        }

    }
}

image.png

你可能感兴趣的:(java 中的 properties)