Java/JavaWeb中读取资源文件

1、一般工程中使用I/O类指定文件的绝对路径读取

FileInputStream fis = new FileInputStream("src/main/resources/zsm.properties");
ppt.load(fis);
String memAddr1 = ppt.getProperty("memAddr1");

2、Web工程中可以使用ServletContext或ClassLoader来读取

  2.1、通过ServletContext来读取资源文件,文件路径是相对于web项目(如JspServletFeature)根路径而言的。

  2.2、通过ClassLoader来读取,文件路径是相对于类目录而言的(maven工程中一般为classes)

  示例如下

(1)文件位置

  

(2)代码

        // 使用servletContext读取资源文件,相对于web项目的根路径(即JspServletFeature)
        out.println("\n使用servletContext读取资源文件,相对于web项目的根路径(即JspServletFeature):");
        readFileByServletContext(response, "FileReadFile1.properties");
        readFileByServletContext(response, "/FileReadFile1.properties");
        readFileByServletContext(response, "WEB-INF/classes/FileReadFile2.properties");
        readFileByServletContext(response, "/WEB-INF/classes/FileReadFile2.properties");
        readFileByServletContext(response, "WEB-INF/classes/com/zsm/util/FileReadFile3.properties");
        readFileByServletContext(response, "/WEB-INF/classes/com/zsm/util/FileReadFile3.properties");
        // 使用ClassLoader读取资源文件,相对于类目录(即classes)
        out.println("\n使用ClassLoader读取资源文件,相对于类目录(即classes):");
        readFileByClassLoader(response, "../../FileReadFile1.properties");
        readFileByClassLoader(response, "/../../FileReadFile1.properties");
        readFileByClassLoader(response, "FileReadFile2.properties");
        readFileByClassLoader(response, "/FileReadFile2.properties");
        readFileByClassLoader(response, "com/zsm/util/FileReadFile3.properties");
        readFileByClassLoader(response, "/com/zsm/util/FileReadFile3.properties");

    // 使用servletContext读取资源文件,相对于web项目的根路径(即JspServletFeature)
    synchronized void readFileByServletContext(HttpServletResponse response, String filePath) throws IOException {
        InputStream in = this.getServletContext().getResourceAsStream(filePath);
        Properties prop = new Properties();
        prop.load(in);
        String fileName = prop.getProperty("fileName");
        String name = prop.getProperty("name");
        String company = prop.getProperty("company");
        in.close();
        response.getWriter().println(MessageFormat.format("filePath={0},  fileName={1},  name={2},  company={3}",
                filePath, fileName, name, company));
    }

    // 使用ClassLoader读取资源文件,相对于类目录(即classes)
    synchronized void readFileByClassLoader(HttpServletResponse response, String filePath) throws IOException {
        // 获取到装载当前类的类装载器
        ClassLoader loader = FileReadServlet.class.getClassLoader();
        InputStream in = loader.getResourceAsStream(filePath);
        Properties prop = new Properties();
        prop.load(in);
        String fileName = prop.getProperty("fileName");
        String name = prop.getProperty("name");
        String company = prop.getProperty("company");
        in.close();
        response.getWriter().println(MessageFormat.format("filePath={0},  fileName={1},  name={2},  company={3}",
                filePath, fileName, name, company));
    }

(3)结果

时间: 2024-10-10 11:04:28

Java/JavaWeb中读取资源文件的相关文章

java 从jar包中读取资源文件

在代码中读取一些资源文件(比如图片,音乐,文本等等),在集成环境(Eclipse)中运行的时候没有问题.但当打包成一个可执行的jar包(将资源文件一并打包)以后,这些资源文件找不到,如下代码:Java代码 [java] view plaincopy //源代码1: package edu.hxraid; import java.io.*; public class Resource { public  void getResource() throws IOException{ File fil

Java-Servlet--《12-WEB应用中的普通Java程序如何读取资源文件.mp4》 有疑问

\第五天-servlet开发和ServletConfig与ServletContext对象\12-WEB应用中的普通Java程序如何读取资源文件.mp4; 多层时,DAO为了得到资源文件中的配置参数: servlet 中的 doGet方法中获得ServletcontextServletcontext context = this.getServletContext();然后将context 对象传到 DAO中使用,这样的话耦合就高了,不合理. 所以:要通过类加载器的方式 这个Properties

(转)java 从jar包中读取资源文件

(转)java 从jar包中读取资源文件 博客分类: java 源自:http://blog.csdn.net/b_h_l/article/details/7767829 在代码中读取一些资源文件(比如图片,音乐,文本等等),在集成环境(Eclipse)中运行的时候没有问题.但当打包成一个可执行的jar包(将资源文件一并打包)以后,这些资源文件找不到,如下代码:Java代码 [java] view plaincopy //源代码1: package edu.hxraid; import java

WEB应用中的普通Java程序如何读取资源文件

1 package cn.itcast; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 6 import javax.servlet.ServletException; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpSer

[Java基础] 深入jar包:从jar包中读取资源文件

转载: http://hxraid.iteye.com/blog/483115?page=3#comments 我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的处理当然不会有问题.但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了.看看下面的代码: //源代码1: package edu.hxraid; import java.io.*; public class Resource { public void getRe

【解惑】深入jar包:从jar包中读取资源文件

我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的处理当然不会有问题.但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了.看看下面的代码: //源代码1: package edu.hxraid; import java.io.*; public class Resource { public void getResource() throws IOException{ File file=new File("bin/res

JAR包中读取资源文件

我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的处理当然不会有问题.但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了.看看下面的代码: 1 //源代码1: 2 3 import java.io.*; 4 public class Resource { 5 public void getResource() throws IOException{ 6 File file=new File("bin/resource/re

Java程序中读取外部文件时的路径问题

转自:https://www.cnblogs.com/wt20/p/8320346.html 项目经常会读取一些配置文件, 因此getResource方法便能够起到重要作用 使用时主要是两种方法, 一个是字节码文件Class类, 另一个是ClassLoader类加载器 使用Class类时有两种使用方式: 1. 使用"/"  获取到的是classpath路径 2. 不使用"/" 这就是相对路径 ClassLoader类 没有"/"的写法, 获取到的

Java项目中读取properties文件

package util; import java.io.IOException; import java.io.InputStream; import java.util.Properties; /**  * 获取配置文件信息  *   * @author Carl  *  */ public final class GetProperties { private static Properties prop = null; static{ prop = new Properties(); /