一.文件读取
1.利用java.util自带的Properties类读取
Properties类的load方法提供了两种读取文件的方式
(1)reader作为参数,以字符流方式读取
Properties properties = new Properties(); try { properties.load(new InputStreamReader(new FileInputStream(fileName),"utf-8")); } catch (IOException e) { e.printStackTrace(); }String url = properties.getProperty("url")
在load参数里面可以用任意的io装饰类去装饰文件输入流,只要最终装饰成字符流即可;InputStreamReader方法有编码参数,若读取含有中文的文件,文本文件默认编码为ANSI(在windows中就是GBK),所以将编码参数设置为GBK;或者我的idea系统设置为utf-8编码,所以只要先将文件转为utf-8编码即可
(2)inputStream作为参数,以字节流方式读取
Properties properties = new Properties(); try { properties.load(new FileInputStream(fileName)); } catch (IOException e) { e.printStackTrace(); }String url = properties.getProperty("url")
同理,load方法参数可以添加任意的装饰组件
2.利用java.util自带的ResourceBundle类读取
ResourceBundle bundle = ResourceBundle.getBundle("config"); String url = bundle.getString("url");
该方法默认读取的是resources文件夹下的以.properties为后缀的文件,代码中的例子即为config.properties
二.文件路径
有几种方式
1.绝对路径,不赘述
2.相对路径
(1)利用System.getProperty方法
System.getProperty("user.dir")+"/src/main/resources/config.properties"
System.getProperty("user.dir")会定位到项目的根目录,可以得到该工程项目所有文件的相关路径及环境配置信息
(2)利用类装载器
String fileName = this.getClass().getClassLoader().getResource("config.properties").getPath();
InputStream in = this.getClass().getClassLoader().getResourceAsStream("config.properties");
二者都定位到的是编译过后class文件所在同级目录下的配置文件。前者可以获取文件完整路径,然后通过reader字符流读取文件,对应于上述properties类load方法中的(1),后者可以直接作为字节流参数输入load方法对应(2)
(3)默认
properties.load(new InputStreamReader(new FileInputStream("config.properties")));
默认定位从项目根目录开始,上面例子读取的是项目根目录下的config.properties文件