在编程过程中配置文件读写操作是很常用的一项知识点,在java中也不例外。抛开编程语言的差异不说,对配置文件的操作的基本流程包括以下几个部分:
1.获取配置文件的资源,直白点说就是我们得找到这个配置文件,很容易碰到的一个问题就是文件的路径问题。
2.创建程序中对应配置文件的操作对象,像如java中的Properties,Qt中Qsetting等,然后调用它们相应的方法加载文件资源。
3.获配置信息,一般来说都是通过key去获得value值,对取到的数据进行应用,或修改某些字段值。
4.关闭文件及资源
这篇文章将简单的介绍一下在java开发中如何读写配置文件,以及在实际过程中可能碰到问题,话不多说,先上代码
import java.io.*;
import java.util.Properties;
public class T2 {
public static void main(String[] args) throws Exception{
/*配置文件写入*/
//创建Properties对象
Properties pro = new Properties();
//添加字段赋值
pro.setProperty("jdbc.url", "jdbc:mysql://localhost:3306/spring_data");
pro.setProperty("jdbc.user", "root");
pro.setProperty("jdbc.password", "root");
pro.setProperty("jdbc.driverClass", "com.mysql.jdbc.Driver");
//保存到文件
pro.store(new FileOutputStream(T2.class.getClassLoader().getResource("a.properties").getFile()),"");
pro.storeToXML(new FileOutputStream(T2.class.getClassLoader().getResource("a.xml").getFile()),"");
/*配置文件读取*/
//获取配置文件流资源到输入流
InputStream in = T2.class.getClassLoader().getResourceAsStream("a.properties");
//创建Properties对象
Properties pro2 = new Properties();
//加载配置文件
pro2.load(in);
//获取配置信息
String url = pro2.getProperty("jdbc.url");
System.out.println(url);
in.close();
}
}
在上面的代码分为两部分,
在配置文件的写入中:我们先创建了一个Properties对象,然后调用setProperty()方法写入配置信息,最后调用store()方法将配置信息写入到文件中。
在配置文件的读取中:我们获取到我们刚才写入的配置文件转化为输入流,然后创建了一个新的Properties对象,调用它的load()方法加载配置文件,再然后就是通过getProperty("key")方法获取某个字段的配置信息,取到之后进行了打印,最后关闭了输入流。
代码比较简单,主要有几个问题会碰到
1.配置文件的获取。
这里主要是配置文件的路径问题,在Java中取资源时我们都会用到Class.getResource()
和ClassLoader.getResource()
,Class.getResourceAsStream()
和ClassLoader().getResourceAsStream()
,其中的差别可以移步到:
Java获取路径时Class.getResource()和ClassLoader.getResource()区别
作者介绍的比较清除,代码中ClassLoader.getResource()和ClassLoader().getResourceAsStream()
再有就是我这里使用的是IDEA,资源文件放置再resources目录下。
2.然后就是获取到的配置信息转化的问题,说白了就是string和其他一些数据类型的转换问题,虽然比较基础,还是记录一下:
1.其他类型转String:
String s = String.valueOf(value); // 其中 value 为任意一种数字类型
2.字符串型转换成各种数字类型:
String s = "169";
byte b = Byte.parseByte( s );
short t = Short.parseShort( s );
int i = Integer.parseInt( s );
long l = Long.parseLong( s );
Float f = Float.parseFloat( s );
Double d = Double.parseDouble( s );