1、系统属性

  • Java中系统属性就是Java的环境变量
  • System.getProperties()方法会返回系统属性值(Properties对象封装)
  • Properties对象的getProperty()方法返回一个String来代表系统属性。

2、Properties类

  • Properties类实现了从名字到值的映射
  • Properties是存储键值对的。是hashtable(map接口下的类)接口下的类。key,value都是字符串
  • getProperty()方法返回一个代表该属性值的字符串
  • 使用load()或store()方法能从文件读入属性集或将属性集写入文件
  • Properties在Java.util包内

3、Properties文件

存储数据时,不仅可以将数据存储到数据库中(虽然这是大多数人选择的做法)。同时,我们可以将数据保存在properties文件中。

这样的好处是,方便、安全,因为每个注册用户都有一个对应的properties文件,操作的系统内存,而不是数据库那样的外存,所以会相对安全,并发性也更好。

弊端是,如果设备断电后,数据将无法读取甚至可能损失。----但是一般如果使用这样方法存储的设备都会支持备用电源,足够时间去做好数据首尾工作。

4、Properties文件的读写操作

  • 首先,我们并不能直接对properties文件进行操作,而是必须先将properties文件读到propertires对象上,然后通过对象去set或者get,最后再将对象保存到属性文件。这样就是读写操作的过程

只要涉及Properties的操作,大体可以分为以下三步:

演示代码

import java.util.*;
import java.io.*;

public class ReadPro
{   static Properties props;
	private String oracle_url,oracle_name,oracle_user,oracle_pwd;
	private String file_path,virtual_path;
	
	static
	{
		try
		{
			props = new Properties();
			File f=new File(".\\OracleSetup.properties");
			FileInputStream in = new FileInputStream(f);
			props.load(in);
			in.close();
		}
		catch(IOException e)
		{
			System.out.println(e);
		}
	
	}
	
	
	
	public ReadPro()
	{
			this.oracle_url   = this.props.getProperty("oracle_url");
			this.oracle_name  = this.props.getProperty("oracle_name");
			this.oracle_user  = this.props.getProperty("oracle_user");
			this.oracle_pwd   = this.props.getProperty("oracle_pwd");
			this.file_path    = this.props.getProperty("file_path");
			this.virtual_path = this.props.getProperty("virtual_path");
			
			
		 	
		}
		
	public void loadproper()
	{    props.setProperty("oracle_user", "bush");
		 props.setProperty("password", "1234");
		 props.setProperty("age", "19");
         props.setProperty("sex", "female");
         props.setProperty("score", "99.9");
			try{
			FileOutputStream out = new 
			     FileOutputStream(".\\Bush.properties");
		    props.store(out, ".\\Bush.properties");
			out.close();
		   }
		  catch(IOException e)
		{
			System.out.println(e);
		}
	 }

	public String getOracle_url()
	{
		return oracle_url;
	}
	public String getOracle_name()
	{
		return oracle_name;
	}
	public String getOracle_user()
	{
		return oracle_user;
	}
	public String getOracle_pwd()
	{
		return oracle_pwd;
	}
	public String getFile_path()
	{
		return file_path;
	} 
	public String getVirtual_path()
	{
		return virtual_path;
	}
	
	public static void main(String args[])
	{
		
		ReadPro rp = new ReadPro();
		System.out.println("oracle_user="+rp.getOracle_user());
	    System.out.println("oracle_name = " + rp.getOracle_name());
		System.out.println("oracle_pwd = " +rp.getOracle_pwd());
		System.out.println("file_path = " +rp.getFile_path());
	    System.err.println("file_path = " +rp.getFile_path()); 
	    System.out.println("virtual_path = " +rp.getVirtual_path());
	   
		//存储Properties 到属性文件
	    rp.loadproper();
	}	
}
  • 将属性文件读到属性对象上
//new一个properties对象
			Properties props = new Properties();
			//新建一个输入流(属性文件),读取到properties对象里
			File f=new File(".\\OracleSetup.properties"); //这个属性文件需要先创建(已经存在的)
			FileInputStream in = new FileInputStream(f);
			//读入对象
			props.load(in);
			//关闭流
			in.close();
  • 对属性对象操作,将对象保存到属性文件
//对属性对象进行set操作。以键值对的方式set,前面是字段key,后面是值value
		props.setProperty("oracle_user", "bush");
		 props.setProperty("password", "1234");
		 props.setProperty("age", "19");
         props.setProperty("sex", "female");
         props.setProperty("score", "99.9");
			try{
			FileOutputStream out = new 
			     FileOutputStream(".\\Bush.properties");//这个属性文件可以是不存在的,不存在系统会去自动创建,如果已存在系统会先删除再创建
              //将对象再保存到文件里
		    props.store(out, ".\\Bush.properties");
              //关闭输出流
			out.close();
		   }
		  catch(IOException e)
		{
			System.out.println(e);
		}

5、一些操作

  • 注册:将用户名、密码存到属性文件中
  • 登录:通过用户名找到对应的属性文件,如果找到,将属性文件中的密码和输入的密码比对,如果一致就成功登录。成功后,将上一次的属性文件的金额读到moneybean中。
  • 一系列存款取款等等操作,之后再将最后的余额set到属性对象,最后再将属性对象存储到属性文件中。

都离不开那三步。