IO流(Properties存取配置文件).
package com.yyq; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.util.Properties; import java.util.Set; /* * Properties 是hashtable的子类 * 也就是说它具备map集合的特点。而且它里面存储的键值对都是字符串 * 不需要泛型 * 是集合中和IO技术相结合的集合容器 * 该对象的特点: 可以用于键值对形式的配置文件 * 把配置信息持久化存储到值得 在读取是先读取配置文件。 * */ public class PropertiesDemo { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub //设置和获取元素 method_1(); loadDemo(); } // 演示:如何将流中的数据存储到集合中。 //想要将info.txt中的键值数据存到集合中进行操作 /* * 1.用一个流和info.txt 文件关联 * 2.读取一行数据,将该行数据用"="进行切割 * 3.等号左边作为建,右边作为值,存入到properties集合中即可 * * 这样写很麻烦,所以 properties给了我们一个字节流或者字符流 * 直接加载的方法: load */ // prop.load 方法的原理: 使用load 方法 // store 方法的使用: // properties 方法的特点: 可以用于键值对形式的配置文件 //那么在加载数据时,需要数据有固定格式: 键 = 值 public static void loadDemo() throws IOException{ Properties prop = new Properties(); FileInputStream fis = new FileInputStream("info.txt"); //将数据存储到指定的文件中 store方法 (持久化) //prop.setProperty("aaa", "hahh"); System.out.println(prop.getProperty("aaa")); prop.load(fis); prop.setProperty("aaa", "hahh"); FileOutputStream fos = new FileOutputStream("info.txt"); prop.store(fos, "nohao"); System.out.println(prop); // list +printStream --- 控制台 prop.list(System.out); } public static void method_1() throws IOException{ BufferedReader bufr = new BufferedReader(new FileReader("info.txt")); String line = null; Properties prop = new Properties(); while((line = bufr.readLine())!=null) { String[] arr = line.split("="); prop.setProperty(arr[0], arr[1]); } //String value = prop.getProperty("李四"); //System.out.println(value); // 修改配置的值,根据键,可以修改值 //prop.setProperty("张三", "10"); Set<String> names = prop.stringPropertyNames(); for(String s:names){ System.out.println(s+":"+prop.getProperty(s)); } System.out.println(prop); } public static void setAndGet(){ Properties prop = new Properties(); prop.setProperty("张三", "30"); prop.setProperty("李四", "40"); String value = prop.getProperty("李四"); System.out.println(value); // 修改配置的值,根据键,可以修改值 prop.setProperty("张三", "10"); Set<String> names = prop.stringPropertyNames(); for(String s:names){ System.out.println(s+":"+prop.getProperty(s)); } System.out.println(prop); } }