A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ℃葫芦 中级黑马   /  2015-8-16 20:04  /  172 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package cn.itcast.io.p2.properties;

  2. import java.io.BufferedReader;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileOutputStream;
  6. import java.io.FileReader;
  7. import java.io.FileWriter;
  8. import java.io.IOException;
  9. import java.util.Properties;
  10. import java.util.Set;

  11. public class PropertiesDemo {

  12.         /**
  13.          * @param args
  14.          * @throws IOException
  15.          */
  16.         public static void main(String[] args) throws IOException {

  17.                 /*
  18.                  * Map
  19.                  *         |--Hashtable
  20.                  *                 |--Properties:
  21.                  *
  22.                  * Properties集合:
  23.                  * 特点:
  24.                  * 1,该集合中的键和值都是字符串类型。
  25.                  * 2,集合中的数据可以保存到流中,或者从流获取。
  26.                  *
  27.                  * 通常该集合用于操作以键值对形式存在的配置文件。
  28.                  *
  29.                  *
  30.                  */
  31.                
  32. //                methodDemo_4();
  33. //                myLoad();
  34.                
  35.                 test();
  36.         }
  37.        
  38.        
  39.         //对已有的配置文件中的信息进行修改。
  40.         /*
  41.          * 读取这个文件。
  42.          * 并将这个文件中的键值数据存储到集合中。
  43.          * 在通过集合对数据进行修改。
  44.          * 在通过流将修改后的数据存储到文件中。
  45.          */
  46.         public static void test() throws IOException{
  47.                 //读取这个文件。
  48.                 File file = new File("info.txt");
  49.                 if(!file.exists()){
  50.                         file.createNewFile();
  51.                 }
  52.                 FileReader fr = new FileReader(file);
  53.                
  54.                
  55.                
  56.                
  57.                 //创建集合存储配置信息。
  58.                 Properties prop = new Properties();
  59.                
  60.                 //将流中信息存储到集合中。
  61.                 prop.load(fr);
  62.                
  63.                 prop.setProperty("wangwu", "16");
  64.                
  65.                
  66.                
  67.                 FileWriter fw = new FileWriter(file);
  68.                
  69.                 prop.store(fw,"");
  70.                
  71. //                prop.list(System.out);
  72.                
  73.                 fw.close();
  74.                 fr.close();
  75.                
  76.                
  77.                
  78.         }
  79.        
  80.        
  81.        
  82.         //模拟一下load方法。
  83.         public static void myLoad() throws IOException{
  84.                
  85.                 Properties prop  = new Properties();
  86.                
  87.                 BufferedReader bufr = new BufferedReader(new FileReader("info.txt"));
  88.                
  89.                 String line = null;
  90.                
  91.                 while((line=bufr.readLine())!=null){
  92.                        
  93.                         if(line.startsWith("#"))
  94.                                 continue;
  95.                        
  96.                         String[] arr = line.split("=");
  97.                        
  98. //                        System.out.println(arr[0]+"::"+arr[1]);
  99.                         prop.setProperty(arr[0], arr[1]);
  100.                 }
  101.                
  102.                 prop.list(System.out);
  103.                
  104.                 bufr.close();
  105.                
  106.         }
  107.        
  108.         public static void methodDemo_4() throws IOException {       
  109.                
  110.                 Properties prop  = new Properties();
  111.                
  112.                 //集合中的数据来自于一个文件。
  113.                 //注意;必须要保证该文件中的数据是键值对。
  114.                 //需要使用到读取流。
  115.                 FileInputStream fis = new FileInputStream("info.txt");
  116.                
  117.                 //使用load方法。
  118.                 prop.load(fis);
  119.                
  120.                 prop.list(System.out);
  121.                
  122.                
  123.                
  124.         }

  125.         public static void methodDemo_3() throws IOException {
  126.                 Properties prop  = new Properties();
  127.                
  128.                 //存储元素。
  129.                 prop.setProperty("zhangsan","30");
  130.                 prop.setProperty("lisi","31");
  131.                 prop.setProperty("wangwu","36");
  132.                 prop.setProperty("zhaoliu","20");
  133.                
  134.                 //想要将这些集合中的字符串键值信息持久化存储到文件中。
  135.                 //需要关联输出流。
  136.                 FileOutputStream fos = new FileOutputStream("info.txt");
  137.                
  138.                 //将集合中数据存储到文件中,使用store方法。
  139.                 prop.store(fos, "info");
  140.                
  141.                 fos.close();
  142.                
  143.         }

  144.         /**
  145.          * 演示Properties集合和流对象相结合的功能。
  146.          */
  147.        
  148.         public static void methodDemo_2(){
  149.                 Properties prop  = new Properties();
  150.                
  151.                 //存储元素。
  152. //                prop.setProperty("zhangsan","30");
  153. //                prop.setProperty("lisi","31");
  154. //                prop.setProperty("wangwu","36");
  155. //                prop.setProperty("zhaoliu","20");
  156.        
  157.                 prop = System.getProperties();
  158.                 prop.list(System.out);
  159.         }
  160.        
  161.         /*
  162.          * Properties集合的存和取。
  163.          */
  164.        
  165.         public static void propertiesDemo(){
  166.                 //创建一个Properties集合。
  167.                
  168.                 Properties prop  = new Properties();
  169.                
  170.                 //存储元素。
  171.                 prop.setProperty("zhangsan","30");
  172.                 prop.setProperty("lisi","31");
  173.                 prop.setProperty("wangwu","36");
  174.                 prop.setProperty("zhaoliu","20");
  175.                
  176.                 //修改元素。
  177.                 prop.setProperty("wangwu","26");
  178.                
  179.                 //取出所有元素。
  180.                 Set<String> names = prop.stringPropertyNames();
  181.                
  182.                 for(String name : names){
  183.                         String value = prop.getProperty(name);
  184.                         System.out.println(name+":"+value);
  185.                 }
  186.         }
  187. }




复制代码


1 个回复

倒序浏览
棒棒棒~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马