使用ServletContext对象访问文件:
一、在项目web 下面创建一个文件夹file,接着创建一个test.properties文件,并输入如图信息
二、配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<servlet-mapping>
<servlet-name>ServletFile</servlet-name>
<url-pattern>/file</url-pattern>
</servlet-mapping>
<!--<servlet-mapping>-->
<!--<servlet-name>ServletContextTest</servlet-name>-->
<!--<url-pattern>/test</url-pattern>-->
<!--</servlet-mapping>-->
</web-app>
三、servlet处理(ServletFile.java)
package com.hcq.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.Properties;
public class ServletFile extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 应用servlet上下文读取properties文件
readProperties();
// 应用servlet上下文写内容到文件中
writeProperties();
}
private void writeProperties() throws IOException {
String realPath = getServletContext().getRealPath("/file/b.properties");
FileWriter fw = new FileWriter(realPath);
BufferedWriter bw = new BufferedWriter(fw);
bw.write("写出到文件的内容");
bw.flush();
bw.close();
}
private void readProperties() throws IOException {
String realPath = getServletContext().getRealPath("/file/test.properties");//返回该资源文件的绝对路径
FileInputStream fis = new FileInputStream(realPath);
InputStreamReader isr = new InputStreamReader(fis);
Properties properties = new Properties();
properties.load(isr);//这里我们使用字符流读取,防止出现乱码
String db = properties.getProperty("db");
String user = properties.getProperty("user");
System.out.println("db:" + db);
System.out.println("user:" + user);
isr.close();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
四、结果
注:不要忘记导入包
补充:
1. ServletContext的getResourceAsStream(String s)方法也可以读取文件
InputStream is = getServletContext().getResourceAsStream("/file/test.properties");//返回字节输入流
接下来的步骤与getRealPath(String s)方法一致
2. ServletContext的getResource(String s)方法也可以读取文件
URL urlObj = this.getServletContext().getResource("/file/test.properties");
InputStream is = urlObj.openStream();//返回一个字节输入流。
接下来的步骤与getRealPath(String s)方法一致