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