config.properties为配置文件,配置文件中的内容:name=沈可馨。
加载配置文件的方法一:
package com.skx;
import java.io.*;
import java.util.*;
public class Test1 {
public static void main(String[] args) throws Exception {
Properties pp=new Properties();
//创建InputStream对象,配置文件如果放在整个项目下
InputStream inStream=new FileInputStream("config.properties");
pp.load(inStream);
String name=pp.getProperty("name");
System.out.println("名字="+name);
}
}
package com.skx;
import java.io.*;
import java.util.*;
public class Test1 {
public static void main(String[] args) throws Exception {
Properties pp=new Properties();
//创建InputStream对象,配置文件如果放在项目下的src源文件夹下
InputStream inStream=new FileInputStream("src/config.properties");
pp.load(inStream);
String name=pp.getProperty("name");
System.out.println("名字="+name);
}
}
package com.skx;
import java.io.*;
import java.util.*;
public class Test1 {
public static void main(String[] args) throws Exception {
Properties pp=new Properties();
//创建InputStream对象,配置文件如果放在项目下的src源文件夹下的子文件夹下
InputStream inStream=new FileInputStream("src/com/skx/config.properties");
pp.load(inStream);
String name=pp.getProperty("name");
System.out.println("名字="+name);
}
}
上面的三种情况都可以加载配置文件,读取到配置文件中的属性值。
综上所述:
如果用InputStream inStream=new FileInputStream(“配置文件路径名”)获取配置文件,则配置文件可以放在项目下,也可以放在项目下的子文件中,相应的配置文件的路径名应该从此项目文件夹开始算起。此时的路径是相对路径,相对的是该项目的目录(路径)。如上面三个例子。
加载配置文件的方法二:
package com.skx;
import java.io.*;
import java.util.*;
public class Test1 {
public static void main(String[] args) throws Exception {
Properties pp=new Properties();
//创建InputStream对象,用类加载器加载
InputStream inStream=Test1.class.getClassLoader().getResourceAsStream("com/skx/config.properties");
pp.load(inStream);
String name=pp.getProperty("name");
System.out.println("名字="+name);
}
}
package com.skx;
import java.io.*;
import java.util.*;
public class Test1 {
public static void main(String[] args) throws Exception {
Properties pp=new Properties();
//创建InputStream对象,用类加载器加载
InputStream inStream=Test1.class.getClassLoader().getResourceAsStream("com/skx/resource/config.properties");
pp.load(inStream);
String name=pp.getProperty("name");
System.out.println("名字="+name);
}
}
这种方法是我们在学习框架中加载配置文件用的最多也是最常用的方法。也就是,如果用类加载器的getResourceAsStream方法获得配置文件,必须将配置文件放在class path 路径(bin文件)下。此时的路径是相对路径,相对的是class path 路径(bin文件)。如图所示:
通俗的讲,就是将配置文件放在包下。getResourceAsStream方法中的路径名就是从包名开始算起。
加载配置文件的方法三:
package com.skx;
import java.io.*;
import java.util.*;
public class Test1 {
public static void main(String[] args) throws Exception {
Properties pp=new Properties();
//创建InputStream对象,直接用类获得配置文件,其实默认还是使用的加载器加载
InputStream inStream=Test1.class.getResourceAsStream("config.properties");
pp.load(inStream);
String name=pp.getProperty("name");
System.out.println("名字="+name);
}
}
package com.skx;
import java.io.*;
import java.util.*;
public class Test1 {
public static void main(String[] args) throws Exception {
Properties pp=new Properties();
//创建InputStream对象,直接用类获得配置文件,其实默认还是使用的加载器加载
InputStream inStream=Test1.class.getResourceAsStream("resource/config.properties");
pp.load(inStream);
String name=pp.getProperty("name");
System.out.println("名字="+name);
}
}
该方法直接用类来加载配置文件,其中配置文件应该放在此类所在的目录下,getResourceAsStream方法中的路径也是相对路径,相对于该类的目录。同时也可以使用绝对路径加载,如下:
package com.skx;
import java.io.*;
import java.util.*;
public class Test1 {
public static void main(String[] args) throws Exception {
Properties pp=new Properties();
//创建InputStream对象,直接用类获得配置文件,其实默认还是使用的加载器加载
InputStream inStream=Test1.class.getResourceAsStream("/com/skx/resource/config.properties");
pp.load(inStream);
String name=pp.getProperty("name");
System.out.println("名字="+name);
}
}
此时的绝对路径是从class path路径(bin目录)开始算的。
特别说明:
在开发java web时,用类加载器加载配置文件。
FileInputStream_fis=SqlHelper.class.getClassLoader().getResourceAsStream(“dbInfo.properties”);其中,dbInfo.properties文件放在src(源文件)目录下