package com.mhc.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
*
* 两种方法解析Properties文件,其实是一种,只是寻找路径的方式不同,
* 一种采用相对的路径,一种是绝对的
* 两种方式可根据代码位置和目标文件位置是否在两层内随机应变
*/
public class ParseProperties {
//第一种方法 : 采用绝对路径方法
public static void parseProperties1(){
//用java的getProperty获得user.dir的系统属性的路径
String filePath = System.getProperty("user.dir")+"/src/db.properties";
System.out.println(filePath);
//生成文件对象
File file = new File(filePath);
//生成文件输入流
FileInputStream in = null;
try {
in = new FileInputStream(file);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//生成properties对象
Properties p = new Properties();
try {
p.load(in);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//输出properties文件的内容
System.out.println("driver "+p.getProperty("jdbc.driver"));
System.out.println("UserName "+p.getProperty("jdbc.userName"));
System.out.println("passWord "+p.getProperty("jdbc.passWord"));
System.out.println("jdbcUrl "+p.getProperty("jdbc.jdbcUrl"));
}
//第二种方法 :采用相对定位方法
public static void parseProperties2(){
//输入流
// String path = ParseProperties.class.getResource(".").getFile().toString();
// // /H:/JavaLearning/MicroMessage/WebRoot/WEB-INF/classes/com/mhc/test
// //以'/'开头的是绝对路径
// path = path.split("/W")[0]+"/src/db.properties";
// System.out.println(path);
/**
* 用AsStream这个函数会自动从当前目录为根目录进行查找,所以在两层以内可以用./或者../寻找像对的路径
* 因为我的放置路径不在两层之内,不便实现,有兴趣的话可以自行挪动到两层之内在实现
*/
InputStream in = ParseProperties.class.getResourceAsStream("../db.properties");
//这里获取的in为null,修改方法上面已说清楚
//生成properties对象
Properties p = new Properties();
try {
p.load(in);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//输出properties文件的内容
System.out.println("driver "+p.getProperty("jdbc.driver"));
System.out.println("UserName "+p.getProperty("jdbc.userName"));
System.out.println("passWord "+p.getProperty("jdbc.passWord"));
System.out.println("jdbcUrl "+p.getProperty("jdbc.jdbcUrl"));
}
public static void main(String[] args) {
parseProperties2();
}
}
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
*
* 两种方法解析Properties文件,其实是一种,只是寻找路径的方式不同,
* 一种采用相对的路径,一种是绝对的
* 两种方式可根据代码位置和目标文件位置是否在两层内随机应变
*/
public class ParseProperties {
//第一种方法 : 采用绝对路径方法
public static void parseProperties1(){
//用java的getProperty获得user.dir的系统属性的路径
String filePath = System.getProperty("user.dir")+"/src/db.properties";
System.out.println(filePath);
//生成文件对象
File file = new File(filePath);
//生成文件输入流
FileInputStream in = null;
try {
in = new FileInputStream(file);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//生成properties对象
Properties p = new Properties();
try {
p.load(in);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//输出properties文件的内容
System.out.println("driver "+p.getProperty("jdbc.driver"));
System.out.println("UserName "+p.getProperty("jdbc.userName"));
System.out.println("passWord "+p.getProperty("jdbc.passWord"));
System.out.println("jdbcUrl "+p.getProperty("jdbc.jdbcUrl"));
}
//第二种方法 :采用相对定位方法
public static void parseProperties2(){
//输入流
// String path = ParseProperties.class.getResource(".").getFile().toString();
// // /H:/JavaLearning/MicroMessage/WebRoot/WEB-INF/classes/com/mhc/test
// //以'/'开头的是绝对路径
// path = path.split("/W")[0]+"/src/db.properties";
// System.out.println(path);
/**
* 用AsStream这个函数会自动从当前目录为根目录进行查找,所以在两层以内可以用./或者../寻找像对的路径
* 因为我的放置路径不在两层之内,不便实现,有兴趣的话可以自行挪动到两层之内在实现
*/
InputStream in = ParseProperties.class.getResourceAsStream("../db.properties");
//这里获取的in为null,修改方法上面已说清楚
//生成properties对象
Properties p = new Properties();
try {
p.load(in);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//输出properties文件的内容
System.out.println("driver "+p.getProperty("jdbc.driver"));
System.out.println("UserName "+p.getProperty("jdbc.userName"));
System.out.println("passWord "+p.getProperty("jdbc.passWord"));
System.out.println("jdbcUrl "+p.getProperty("jdbc.jdbcUrl"));
}
public static void main(String[] args) {
parseProperties2();
}
}