读取资源(配置)文件的三种方式:
利用ServletContext.getRealPath():特点:读取应用中任何文件。只能在Web环境下用
得到文件的真实路径 注: 路径必须以"/"开头,"/"就代表当前应用
注意不同位置的配置文件的路径写法,具体参考Tomcat中配置文件的路径
ServletContext sc = getServletContext();
String path = sc.getRealPath("/1.jpg");
path为: c:\apache-tomcat-6.0.35\webapps\day06\1.jpg
利用ResourceBundle读取配置文件
特点:可以用在非web环境下。但是只能读取类路径中的properties文件
利用类加载器读取配置文件(专业)
特点:可以用在非web环境下。可以读取类路径下的任何文件。
***************************************************************************************
配置文件安放位置如图所示:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.util.ResourceBundle;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// 其他读取资源文件的方式: 注意路径的不同书写方式
public class ServletDemo7 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
test1();
}
// 利用ServletContext读取a1.properties
public void test1() throws IOException, FileNotFoundException {
ServletContext sc = getServletContext();
// 注: 此处路径具体参考Tomcat中的实际路径
String path = sc.getRealPath("/WEB-INF/a1.properties");
Properties props = new Properties();
props.load(new FileInputStream(path));
String value = props.getProperty("username");
System.out.println(value);
}
// 利用ServletContext读取a2.properties 该配置文件在src下面 具体参照Tomcat文件路径
public void test2() throws IOException, FileNotFoundException {
ServletContext sc = getServletContext();
String path = sc.getRealPath("/WEB-INF/classes/a2.properties");
Properties props = new Properties();
props.load(new FileInputStream(path));
String value = props.getProperty("username");
System.out.println(value);
}
// 利用ServletContext读取a3.properties
public void test3() throws IOException, FileNotFoundException {
ServletContext sc = getServletContext();
String path = sc.getRealPath("WEB-INF/classes/cn/itcast/resource/a3.properties");
Properties props = new Properties();
props.load(new FileInputStream(path));
String value = props.getProperty("username");
System.out.println(value);
}
//*********************************************************************************//
// 利用ResourceBundle读取配置文件a2.properties
public void test4(){
// 设置要读取的文件: 该方式只能读取.properties格式的文件,所以只需写基名即可
ResourceBundle rb = ResourceBundle.getBundle("a2");
String value = rb.getString("username");
System.out.println(value);
}
// 利用ResourceBundle读取配置文件a3.properties
public void test5(){
ResourceBundle rb = ResourceBundle.getBundle("cn.itcast.resource.a3");
String value = rb.getString("username");
System.out.println(value);
}
//*********************************************************************************//
// 利用类加载器来读取配置文件a2.properties
public void test6() throws IOException, FileNotFoundException {
// 得到ServletDemo7类的类加载器
ClassLoader cl = ServletDemo7.class.getClassLoader();
InputStream in = cl.getResourceAsStream("a2.properties");
Properties props = new Properties();
props.load(in);
String value = props.getProperty("username");
System.out.println(value);
}
// 利用类加载器来读取配置文件a3.properties
public void test7() throws IOException, FileNotFoundException {
ClassLoader cl = ServletDemo7.class.getClassLoader();
InputStream in = cl.getResourceAsStream("cn/itcast/resource/a3.properties");
Properties props = new Properties();
props.load(in);
String value = props.getProperty("username");
System.out.println(value);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}