Resource操作资源

来源:互联网 发布:啦啦啦德玛西亚 知乎 编辑:程序博客网 时间:2024/06/03 23:02

常用的实现:FileSystemResource 加载文件,可以使用文件绝对路径;ClassPathResource 加载classpath下资源;ServletContextResource加载Servlet上下文的资源。

打了jar包后,不能获取File,但是可以获取输入流;


一:读取jar包里的文件

文件在 src/main/resources/conf目录下;

引入jar

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.1.4.RELEASE</version>
</dependency>

public static void m2() throws IOException{Resource r1=new ClassPathResource("conf/1.txt");InputStream is = r1.getInputStream();int n;ByteArrayOutputStream bos = new ByteArrayOutputStream();while((n=is.read())!=-1){bos.write(n);}System.out.println(bos.toString());bos.close();is.close();System.out.println("m2 ok");}


二 读写web项目里的资源

引入jar

<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.3.9.RELEASE</version></dependency><!-- ServletContextResource --><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>4.3.9.RELEASE</version></dependency>


index.jsp:

<html><script type="text/javascript">var n="1.33";var n1="1.32";alert(n>n1);</script><body><h2>Hello World!</h2><strong>classpath下的资源读写</strong><br><a href="S1">write</a><br><a href="S2">read</a><br><strong>web上下文的资源读写</strong><br><a href="S3">write</a><br><a href="S4">read</a></body></html>


S1.java

import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStream;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.core.io.ClassPathResource;import org.springframework.core.io.Resource;/** * Servlet implementation class S1 */public class S1 extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {Resource r=new ClassPathResource("1.txt");File file = r.getFile();OutputStream os=new FileOutputStream(file,true);os.write("你好世界".getBytes());os.close();System.out.println("write ok");}}


S2.java

import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.core.io.ClassPathResource;import org.springframework.core.io.Resource;/** * Servlet implementation class S2 */public class S2 extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {Resource r=new ClassPathResource("1.txt");InputStream is = r.getInputStream();ByteArrayOutputStream bos = new ByteArrayOutputStream();int n;while((n=is.read())!=-1){bos.write(n);}System.out.println(bos.toString());bos.close();is.close();System.out.println("------------------");}}

S3.java

import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.core.io.Resource;import org.springframework.web.context.support.ServletContextResource;/** * Servlet implementation class S3 */public class S3 extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {Resource r=new ServletContextResource(request.getServletContext(), "index1.jsp");System.out.println(r.getDescription());File file = r.getFile();OutputStream os=new FileOutputStream(file,true);os.write("中国".getBytes());os.flush();os.close();System.out.println("write ok");}}


S4.java

import java.io.ByteArrayOutputStream;import java.io.File;import java.io.IOException;import java.io.InputStream;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.core.io.Resource;import org.springframework.web.context.support.ServletContextResource;/** * Servlet implementation class S4 */public class S4 extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {ServletContextResource r=new ServletContextResource(request.getServletContext(), "index1.jsp");System.out.println(r.getDescription());System.out.println(r.getPath());System.out.println(r.getPathWithinContext());System.out.println(r.getURL());System.out.println(r.getURI());InputStream is = r.getInputStream();ByteArrayOutputStream bos = new ByteArrayOutputStream();int n;while((n=is.read())!=-1){bos.write(n);}System.out.println(bos.toString());bos.close();is.close();System.out.println("------------------");}}




原创粉丝点击