天天看点

Properties类,配置文件,文件路径

1 Properties配置文件说明

Properties类对应.properties文件。文件内容是键值对,键值对之间使用"="或空格隔开。开头是"#"的表示注释

Properties类在加载.properties文件时使用的iso8859-1的编码。所以这个文件中的中文要特殊处理:如果这个配置文件中有中文就必须要进行转义,使用native2ascii.exe命令操作:    native2ascii d:/my.properties d:/my2.properties

使用Properties类中的load(InputStream) 方法可以加载配置文件,使用其中的store(OutputStream) 方法可以保存配置到指定文件。

更多的信息可以看Properties类的API文档。

2 加载配置文件

Properties类,配置文件,文件路径

3 写配置文件

Properties类,配置文件,文件路径

4 使用Properties类

/*
 如果经常会发生变化的数据我们可以定义在配置文件上。 比如说:数据库的用户名与密码。
 配置文件的路径应该如何写 呢?
 	绝对路径:一个文件的完整路径信息。一般绝对路径是包含有盘符 的。  绝对路径的缺陷: 因为绝对路径是有盘符开头的,有些系统是没有盘符的。
 	相对路径: 相对路径是相对于当前程序的路径。当前路径就是执行java命令的时候,控制台所在的路径。
 	类文件路径 :类文件路径就是使用了classpath的路径找对应的资源文件。
 	如果需要使用到类文件路径首先先要获取到一个Class对象。
 */
public class DBUtil {
	static Properties properties = new Properties();
	static{
		try {
			Class clazz = DBUtil.class;
  //  "/"代表了Classpath的路径。getResourceAsStream 该方法里面使用的路径就是使用了类文件路径。
			InputStreamReader fileReader =
			new InputStreamReader(clazz.getResourceAsStream("/db.properties"));
			properties.load(fileReader);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	public static String getUserName(){
		String userName =properties.getProperty("userName");
		return userName;
	}
	public static String getPassword(){
		return	properties.getProperty("password");
	}
	public static void main(String[] args) {
		System.out.println("用户名:"+ getUserName());
		System.out.println("密码: "+  getPassword());
	}
}           

5,文件路径

5.1 绝对路径:以根目录或某盘符开头的路径(或者说完整的路径)

例如:

  1. c:/a.txt (Windows操作系统中)
  2. c:/xxx/a.txt (Windows操作系统中)
  3. /var/xx/aa.txt (Linux操作系统中)

绝对路径的问题: 比如C:\abc\a.properties文件路径,该路径在windows上执行没有 问题,但是如果把该项目移动到linux上面执行 ,该路径就会出现问题了,因为在linux上面没有c盘的,只有根目录\。

5.2 相对路径  相对于当前路径的一个路径。例如当前文件夹为c:/abc时:相对路径a.txt表示c:/abc/a.txt,相对路径xx/a.txt = c:/abc/xx/a.txt

  1. .  表示当前文件夹
  2. .. 表示上级文件夹

相对路径存在的问题:相对路径是相对于目前执行class文件的时候,控制台所在的路径,这样子也会导致出现问题。

5.3 Java中的相对路径

Properties类,配置文件,文件路径

在命令行中使用cd命令切换到不同的路径下试试,可以看到以上所说的效果。

在Eclipse中,当前路径是工程的根目录。

5.4 classpath路径

在Java程序中,一般情况下使用绝对路径还是相对路径都不太合适,因为Java程序的jar包所放的位置不确定,执行java程序时当前的路径也不确定,所以不合适。一般在Java程序中我们会把资源放到classpath中,然后使用classpath路径查找资源。

Classpath路径:就是使用classpath目前的路径。

Properties类,配置文件,文件路径