Java系列(48)——属性集合 Properties

本文深入讲解Java中的Properties类,包括其构造器、常用方法、如何存取数据、将数据写入及从文件读取,特别关注于键值对的字符串形式处理。

本系列博客汇总在这里:Java系列_汇总


一、简介

在这里插入图片描述
Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。

特点:

  1. 继承于HashTable,是线程安全的键值对存储结构。
  2. Properties 可保存在流中或从流中加载。
  3. 只能保存字符串的键值对。

二、构造器

在这里插入图片描述

三、常用方法

在这里插入图片描述

四、属性集合 Properties 的存取

  • 示例
    public static void main(String[] args)
    {
    	//创建属性集对象
    	Properties prop = new Properties();
    
    	prop.setProperty("name", "张三");
    	prop.setProperty("age", "23");
    	prop.setProperty("gender", "男");
    	System.out.println(prop);
    
    	String name = prop.getProperty("name");
    	String age = prop.getProperty("age");
    	String gender = prop.getProperty("gender");
    
    	System.out.println(name);
    	System.out.println(age);
    	System.out.println(gender);
    }
    
    在这里插入图片描述

五、把属性类的对象数据写入文件(txt)

  • 示例
    public static void main(String[] args)
    {
    	// 创建属性集对象
    	Properties prop = new Properties();
    
    	prop.setProperty("name", "张三");
    	prop.setProperty("age", "23");
    	prop.setProperty("gender", "男");
    
    	PrintWriter pw = null;
    	try
    	{
    		pw = new PrintWriter("d.txt");
    		
    		Set set = prop.keySet();
    		
    		for (Object obj : set)
    		{
    			String key = (String) obj;
    			String value = prop.getProperty(key);
    			pw.println(key + "=" + value);
    		}
    		pw.flush();
    		
    	} catch (FileNotFoundException e)
    	{
    		e.printStackTrace();
    	} finally
    	{
    		if (pw != null)
    		{
    			pw.close();
    		}
    	}
    }
    
    在这里插入图片描述
    public static void main(String[] args)
    {
    	// 创建属性集对象
    	Properties prop = new Properties();
    
    	prop.setProperty("name", "张三");
    	prop.setProperty("age", "23");
    	prop.setProperty("gender", "男");
    
    	PrintWriter pw = null;
    	try
    	{
    		pw = new PrintWriter("d.txt");
    		// 把属性对象的数据写入到输出流中
    		prop.list(pw);
    	} catch (FileNotFoundException e)
    	{
    		e.printStackTrace();
    	} finally
    	{
    		if (pw != null)
    		{
    			pw.close();
    		}
    	}
    }
    
    在这里插入图片描述

六、读取属性文件(txt)数据

  • 示例
    public static void main(String[] args)
    {
    	// 创建属性集对象
    	Properties prop = new Properties();
    	FileReader fr = null;
    	try
    	{
    		fr = new FileReader("d.txt");
    		// 从属性文件中加载数据
    		prop.load(fr);
    		System.out.println(prop);
    		String name = prop.getProperty("name");
    		String age = prop.getProperty("age");
    		String gender = prop.getProperty("gender");
    		System.out.println(name);
    		System.out.println(age);
    		System.out.println(gender);
    		
    	} catch (Exception e)
    	{
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	} finally
    	{
    		try
    		{
    			if (fr != null)
    			{
    				fr.close();
    			}
    		} catch (IOException e)
    		{
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    }
    
    在这里插入图片描述

七、创建属性文件

  1. 实际工作中,通常不会在工程文件中创建。
    在这里插入图片描述

八、属性文件的写入

  • 示例
    public static void main(String[] args)
    {
    	// 创建属性集对象
    	Properties prop = new Properties();
    
    	prop.setProperty("name", "张三");
    	prop.setProperty("age", "23");
    	prop.setProperty("gender", "男");
    
    	FileWriter fw = null;
    	try
    	{
    		fw = new FileWriter("src/prop.properties");
    		// 把属性对象的数据写入到输出流中
    		prop.store(fw, "我的键值对");
    	} catch (Exception e)
    	{
    		e.printStackTrace();
    	} finally
    	{
    		if (fw != null)
    		{
    			try
    			{
    				fw.close();
    			} catch (IOException e)
    			{
    				// TODO 自动生成的 catch 块
    				e.printStackTrace();
    			}
    		}
    	}
    }
    
    在这里插入图片描述

九、属性文件的读取

  • 示例
    public static void main(String[] args)
    {
    	// 创建属性集对象
    	Properties prop = new Properties();
    	FileReader fr = null;
    	try
    	{
    		//实际工作中使用 Properties 的文件来存储数据,不使用txt
    		fr = new FileReader("src/prop.properties");
    		//从属性文件中加载数据
    		prop.load(fr);
    		System.out.println(prop);
    
    	} catch (Exception e)
    	{
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	} finally
    	{
    		try
    		{
    			if (fr != null)
    				fr.close();
    		} catch (IOException e)
    		{
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    }
    
    在这里插入图片描述

如有错误,欢迎指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值