properties类的操作,主要对xxx.properties文件进行操作。其主要的操作就是读跟写的操作。下面是简单的指令介绍:
1. getProperty ( String key),用指定的键在此属性列表中搜索属性。也就是通过参数 key ,得到 key 所对应的 value。
2. load ( InputStream inStream),从输入流中读取属性列表(键和元素对)。通过对指定的文件(比如说上面的 test.properties 文件)进行装载来获取该文件中的所有键 - 值对。以供 getProperty ( String key) 来搜索。
3. setProperty ( String key, String value) ,调用 Hashtable 的方法 put 。他通过调用基类的put方法来设置 键 - 值对。
4. store ( OutputStream out, String comments),以适合使用 load 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。与 load 方法相反,该方法将键 - 值对写入到指定的文件中去。
5. clear (),清除所有装载的 键 - 值对。该方法在基类中提供。
读properties文件:
简单的来讲,分为三步:创建properties对象、加载文件、读取对象。
//获得绝对路径
URL baseUrl = Thread.currentThread().getContextClassLoader().getResource("");
//1、 创建 propertie对象
Properties properties = new Properties();
//2.加载properties文件,需要通过字节流加载文件。
properties.load(new FileInputStream(baseUrl.getFile()+File.separator+"config.properties"));
//3.通过getproperties获得相应的字段的信息
String po = properties.getProperty("time");
System.out.println(po);
其中properties文件中,相应的字段的信息填写的格式如下:
time = 2016-01-01
即可获得time的相应字段 2016-01-01。
通过字节流加载文件也可以如下编写:
//获得绝对路径
URL baseUrl = Thread.currentThread().getContextClassLoader().getResource("");
//1、 创建 propertie对象
Properties properties = new Properties();
//2.加载properties文件,需要通过字节流加载文件。使用完毕记得关闭字节流。
FileInputStream fis = new FileInputStream(baseUrl.getFile()+File.separator+"config.properties");
properties.load(fis);
fis.close();
//3.通过getproperties获得相应的字段的信息
String po = properties.getProperty("time");
System.out.println(po);
关于路径的问题,在本机测试也可以直接用简单的相对路径来测试,关于相当于路径与绝对路径的问题就不加详细讨论了。
写properties文件:
写properties文件:创建properties对象,加载properties文件、通过setProperties修改字段、通过字节流存储修改。
Properties properties = new Properties();
//这里使用的相对路径的方法记载properties文件
properties.load(new FileInputStream("rec/config.properties"));
//通过setProperties的方式,存储time字段。
properties.setProperty("time", "adsasd");
//写文件的存储需要通过输出字节流,并调用properties的store的方法来存储修改数据。
properties.store(new FileOutputStream("rec/config.properties"), "update-time");
System.out.println(properties.get("time"));
其中properties.store中后面的”update-time”为附加的修改信息备注,可以自行备注附加信息。
要注意的一点就是,properties对象中,输入流加载的文件与输出流加载的文件必须一致,才能保证修改有效,为同一个文件。
这边之所以用相对路径的方法,主要是想读到自己创建的文件夹文件的位置。读方法中用Thread.currentThread().getContextClassLoader().getResource("")取得的是,java编译后,文件的位置,并非自己创建文件夹文件所存放位置。
所以,properties类的读写操作要特别注意文件位置的问题。
本文由很多借鉴别人的资料,并非完全原创,欢迎大家借鉴交流。