Java实现读取和写入properties文件
作者:仙草不加料
Java读取和写入properties文件
properties文件是一种属性文件,这种文件以key=value格式存储内容。
Java中可以使用Properties类来读取这个文件,一般properties文件作为一些参数的存储,使得代码更加灵活。
这里先定义一个data.properties文件,内容如下:
cn=12 kr=14 jp=64
既然properties是一个文件,那么我们也可以用FileInputStreram来进行读取:
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\test\\data.properties"))) { int data = -1; while((data = bis.read()) != -1) { System.out.print((char)data); } } catch (IOException e) { e.printStackTrace(); } 运行结果 // cn=12 // kr=14 // jp=64
但是,由于properties文件中每一行都是独立的键值对,这种普通读取方式并没有按照键值对的方式进行读取,而是逐个字节读取,对于这种文件来讲是没有意义的。
所以就应该使用Properties类来进行读取,从jdk源码中可以看出,Properties继承自Hashtable,因此,Properties也同样有put和get方法,由于,properties是一个文件,Properties类提供了一个load()方法,InputStram作为数据源,传入一个输入流,把输入流中的内容传入到内部的key和value中,然后就能读取到properties文件中的内容了。
代码如下:
// Properties格式文件的写入 try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\test\\data.properties"))) { Properties props = new Properties(); props.load(bis); // 将“输入流”加载至Properties集合对象中 // 根据key,获取value System.out.println("cn"); } catch (IOException e) { e.printStackTrace(); } // 运行结果 // cn=12
同样,在写properties文件时,Properties类也提供了store()方法,OutputStream和String类型的注释作为数据源,将内部的键值对集合和注释传入到输出流中,就可以进行写入操作了。
代码如下:
// Properties格式文件的写入 try { Properties props = new Properties(); props.put("F1", "2314"); props.put("F2", "2341"); props.put("F3", "5322"); props.put("F4", "4316"); // 使用“输出流”,将Properties集合中的KV键值对,写入*.properties文件 try(BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D:\\test\\demo.properties"))){ props.store(bos, "just do IT"); } } catch (IOException e) { e.printStackTrace(); }
可以看到,demo.properties文件已经被创建出来了,内容包括注释、创建时间和每对键值对 。
Java读写properties文件(java.util.Properties)
Java对于properties文件的读写可以说是最简单的一个读取、写入配置文件的方法了,在properties文件中,数据是用类似于键值对的存储方式进行存储的。
下面就是一个简单的properties文件:
username=xm99 password=1234567
没错,就是这么简单的方式。
那么我们想要对properties文件进行操作的时候应该如何操作呢?
- 生成一个properties对象
- 使用properties对象的
String name = p.getProperty("valueName");
方法获得配置的值 - 使用properties对象的
setProperty(String key,String value)
方法在配置文件中增加配置信息。之后使用store()
方法进行保存 - 关闭输入流/输出流对象
写入配置文件代码实例
package proTest; import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties; public class proSavaTest { public static void main(String[] args) throws IOException { FileOutputStream out = new FileOutputStream("D:\\demo\\javaBase\\src\\proTest\\pro.properties"); Properties pro = new Properties(); pro.setProperty("username","xm99"); pro.setProperty("passwd","12345"); pro.store(out,"acb"); } }
读取配置文件示例
package proTest; import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; public class proTest { public static void main(String[] args) throws IOException { FileInputStream in = new FileInputStream("D:\\demo\\javaBase\\src\\proTest\\pro.properties"); Properties pro = new Properties(); pro.load(in); String username = pro.getProperty("username"); String passwd = pro.getProperty("passwd"); System.out.println("username="+username); System.out.println("passwd="+passwd); in.close(); } }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。