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