zoukankan      html  css  js  c++  java
  • 文件处理----Properties文件处理

      properties是一种属性文件,这种文件以key=value格式存储内容,代码中可以使用Properties类来读取这个文件,然后得到数据。

      当配置文件用,由于难以表达层次,复杂点可以使用xml做配置。

    通俗点讲就相当于定义一个变量,在这个文件里面定义这些变量的值,在程序里面可以调用这些变量,好处就是,如果程序中的参数值需要变动,直接来改这个.properties文件就可以了,不用去修改源代码。


      Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集。不过Properties有特殊的地方,就是它的键和值都是字符串类型。

      Properties类表示一组持久的属性。Properties可以保存到流中或从流中加载。属性列表中的每个键及其对应的值都是一个字符串。

    Properties主要方法:

    (1)loadload(InputStream in);--从输入字节流读取属性列表(键和元素对)

    load(Reader reader);--从简单的线性格式从输入字符流读取属性列表(关键字和元素对)

    (2)store

    store(OutputStream out,String comments);--将此属性列表(键和元素对)写入此Properties表中,以适合于使用load(InputStream)方法加载到Properties表中的格式输出流。

    comments不为空,保存后的属性文件第一行会是#comments,表示注释信息;如果为空则没用注释信息。注释信息后面是属性文件的当前保存时间信息。

    store(writer write,String comments);

    (3)getProperty(String key)和setProperty(String key,String value)

    第一个是  使用此属性列表中指定的键搜索属性。

    第二个是  致电Hashtable方法put,也就是设置键值(一个新的键值对)。

    (4)clear();

    清除所有装载的键值对,该方法在基类中提供。

     1 package a.one;
     2 
     3 import java.io.FileInputStream;
     4 import java.io.FileOutputStream;
     5 import java.util.Properties;
     6 
     7 public class PropertiesTest2 {
     8     public static void main(String[] args) throws Exception {
     9         //一个空的属性列表
    10         Properties p=new Properties();
    11         System.out.println(p);
    12         FileInputStream in=new FileInputStream("config/c.properties");
    13         p.load(in);//加载属性列表
    14         System.out.println(p);
    15         System.out.println(p.getProperty("name"));//得到某属性值
    16         System.out.println("===========================");
    17         FileOutputStream out=new FileOutputStream("config/d.properties");
    18         p.setProperty("key", "value");
    19         p.store(out, "Annotation");//注释
    20     }
    21 }

    结果:

    {age=30, name=taeyeon, song=four seasons}
    taeyeon
    ===========================

    d.properties:

    1 #Annotation
    2 #Wed Apr 17 13:03:52 GMT+08:00 2019
    3 age=30
    4 name=taeyeon
    5 key=value
    6 song=four seasons

    c.properties:

    1 name=taeyeon
    2 age=30
    3 song=four seasons

    总结:Java的properties文件需要放到classpath下面,这样程序才能读取到,有关classpath实际上就是Java类或者库的存放路径,在Java工程中,properties放到class文件这一块。在web应用中,最简单的方法就是放到web应用的WEB-INFclasses目录下即可,也可以放到其他文件夹下面,这时候需要在设置classpath环境变量的时候,将这个文件的路径加到classpath变量中,这样也可以读取到。


  • 相关阅读:
    算法探究-2.retinaNet(Focal Loss)
    C++基础-枚举体 enum class
    C++基础-TypeTraits(进行类型的属性判断) 1.is_lvalue_reference(左值引用判断) 2.is_integral(整形判断) 3.is_class(基本类型判段) 4.is_same(判断类型一致) 5.enable_if(条件判断)
    C++基础-auto(自动分配属性)和decltype(指定分配属性)
    C++基础-正则实战(日期拆分regex_match ,符号拆分sregex_token_iterator, 邮箱的查找 regex_search)
    C++基础-正则表达式 regex_match(匹配) regex_search(查找) regex_replace(替换)
    Shell 入门(三):sed,awk,grep
    Shell 入门(二):数组与函数
    Shell 入门(一):变量和流程控制
    ArcSDE 版本差异提取
  • 原文地址:https://www.cnblogs.com/xjs1874704478/p/10721514.html
Copyright © 2011-2022 走看看