Properties的用法

package test;
 
 
import java.io.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.zip.InflaterInputStream;
 
import javax.annotation.processing.FilerException;
 
import privateclass.Filterby_Name;
import privateclass.Filterby_hidden;
import privateclass.Filterby_java;
import privateclass.MyBufferedReader;
 
public class Main {
 
    private static final String space_operator = " ";
    private static final double pi = Math.PI;
    private static final String LINE_SEPARATOR = System.getProperty("line.separator");
    public static void main(String[] args) throws Exception {
 
    	/*
    	 * 他是hashtable的小弟和Map的用法基本相同
    	 * 它会和io流技术相结合
    	 * 用来存取键值对构造配置信息
    	 * 
    	 */
       Properties pt = new Properties();
       pt.setProperty("zhangsan", "30");
       pt.setProperty("zishou", "26");
       pt.setProperty("fengxing", "304");
       pt.setProperty("ziran", "305");
       pt.setProperty("tiexin", "80");
       
       //键存的内容的覆盖
       pt.setProperty("tiexin", "86");
       
       /**
        * 随时知道在Properties集合里面有什么内容
        * 但是不可以修
        */
       pt.list(System.out);
       
       //获取系统信息
       Properties ps = System.getProperties();
       ps.list(System.out);
       System.out.println();
       
       /*
        * 打印pt的信息
       for(String name: pt.stringPropertyNames())
       {
    	   System.out.println(name + ":  " + pt.getProperty(name));
       }
       */
       
       //存储pt的信息到一个文件里面
       FileOutputStream fos = new FileOutputStream("姓名+年龄.txt");
       //comments(第二个键)是在文件里面标志信息  添加中文是Unicode因此不建议用
       pt.store(fos, "name + age");
       
       fos.close();
       
       pt.clear();
       pt.list(System.out);
       FileInputStream fis = new FileInputStream("姓名+年龄.txt");
       //拿到配置信息
       pt.load(fis);
       pt.list(System.out);
       System.out.println();
       
       //对load的自我实现
       Myload();
       System.out.println();
       //键值对的修改
       mkdixproper();
       fis.close();
       fos.close();
       
    }
    /**
	 * 实现对文件里面的键值对的修改
     * @throws IOException 
	 */
    public static void mkdixproper() throws IOException {
    	File file = new File("姓名+年龄.txt");
    	//当writer在这里的时候一定要加上true表示这个文件存在
    	//FileWriter fw = new FileWriter(file,true);
    	
    	if(!file.exists())file.createNewFile();
    	//经过前面的步骤我们打开的文件一定是存在的
		FileReader fr = new FileReader(file);
		
		Properties prop = new Properties();
		prop.load(fr);
		
		//当放在这里的时候我们就不需要加上true
		FileWriter fw = new FileWriter(file);
		prop.list(System.out);
		prop.setProperty("tiexin", "36");
		
		//注意这里面的store是将文件里面的东西全部删除后再保存的
		prop.store(fw, "naem + age");
		System.out.println();
		prop.list(System.out);
		fr.close();
		fw.close();
		
	}
	/**
     * 实现对Properties里面的load实现
     * 直接用split实现
     * 但是要注意load的信息里面必须是键值对
     * @throws IOException
     */
	public static void Myload() throws IOException  {
		BufferedReader bfr = new BufferedReader(new FileReader("姓名+年龄.txt"));
		
		Properties pt = new Properties();
		String string = null;
		while((string = bfr.readLine()) != null)
		{
			if(string.startsWith("#"))
			continue;
			String [] a = string.split("=");
			pt.setProperty(a[0], a[1]);
		}
		pt.list(System.out);
		bfr.close();
	}
	
	
}

  

posted @ 2019-11-08 20:49  WINDZLY  阅读(200)  评论(0编辑  收藏  举报