这里总结3中方法获取资源文件的

  • ServletContext
  • Class
  • ClassLoader

文件的位置

1. ServletContext

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter pw = response.getWriter();
ServletContext context = this.getServletContext();
/**
* 获取不同路径下的资源文件
* servletContext是相对于项目的根目录的,这里为WebContent
*/
InputStream inputA = context.getResourceAsStream("/a.txt");
InputStream inputB = context.getResourceAsStream("/WEB-INF/classes/cn/zydev/b.txt");
InputStream inputC = context.getResourceAsStream("/WEB-INF/classes/c.txt"); /**
* 获取真实的磁盘路径
*/
String realPath = context.getRealPath("/WEB-INF/classes/c.txt"); /**
* 获取指定目录下的文件(包括目录,深度为1级)
*/
Set<String> rsc = context.getResourcePaths("/WEB-INF");
String a = IOUtils.toString(inputA);
String b = IOUtils.toString(inputB);
String c = IOUtils.toString(inputC);
pw.print(a+"<br/>");
pw.print(b+"<br/>");
pw.print(c+"<br/>");
pw.print(realPath+"<br/>");
pw.println(rsc);
}

  结果显示:

2. ClassLoader

使用ClassLoader是相对于classes的

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter pw = response.getWriter();
/**
* ClassLoader是相对于classes参照的
* 第一个斜杠可以不写,也可以写成./(熟悉Linux的应该很清楚)
*/
ClassLoader cl = this.getClass().getClassLoader();
InputStream inputA = cl.getResourceAsStream("/../../a.txt");
InputStream inputB = cl.getResourceAsStream("/cn/zydev/b.txt");
InputStream inputC = cl.getResourceAsStream("/c.txt");
String a = IOUtils.toString(inputA);
String b = IOUtils.toString(inputB);
String c = IOUtils.toString(inputC);
pw.print(a+"<br/>");
pw.print(b+"<br/>");
pw.print(c+"<br/>");
}

  得到结果:

3. class

路径前斜杠表示相对于当前的class,不加斜杠相对于classes

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter pw = response.getWriter();
Class cs = this.getClass();
//不加斜杠表示相对于class(CServlet)
InputStream inputA = cs.getResourceAsStream("../../../../a.txt");
InputStream inputB = cs.getResourceAsStream("b.txt");
//加斜杠,相对于classes
InputStream inputC = cs.getResourceAsStream("/c.txt");
String a = IOUtils.toString(inputA);
String b = IOUtils.toString(inputB);
String c = IOUtils.toString(inputC);
pw.print(a+"<br/>");
pw.print(b+"<br/>");
pw.print(c+"<br/>");
}

  得到结果:

Java中获取资源文件的方法总结的更多相关文章

  1. java基础知识3--如何获取资源文件(Java中获取资源文件的url)

    java开发中,常见的resource文件有:.xml,.properties,.txt文件等,后台开发中经常用到读取资源文件,处理业务逻辑,然后返回结果. 获取资源文件的方法说明getResourc ...

  2. java中读取资源文件的方法

    展开全部 1.使用java.util.Properties类的load()方法 示例: //文件在项目下.不是在包下!! InputStream in = new BufferedInputStrea ...

  3. java 中获得 资源文件方法

    1 java 中获取资源文件的方法 项目目录如下 获取当前项目的目录路径 方法一:使用类名 MergeDocHandler.class.getClassLoader().getResource(&qu ...

  4. springboot jar包运行中获取资源文件

    1. 今天晚上写了一个程序,基于Spring boot的一个小网站,发现使用FileUtils.class.getResource(path)来获取jar包中的资源文件并不能成功,其路径很奇怪 fil ...

  5. java之获取资源文件

    背景介绍 在java程序中有时我们需要加载项目中的某些资源文件(如:config.properties之类),以便获取里面的值,这样可以避免某些需要经常修改的数据硬编码入业务程序中 实现方式 实现这种 ...

  6. Java中的资源文件加载方式

    文件加载方式有两种: 使用文件系统自带的路径机制,一个应用程序只能有一个当前目录,但可以有Path变量来访问多个目录 使用ClassPath路径机制,类路径跟Path全局变量一样也是有多个值 在Jav ...

  7. 说说Java中的资源文件的读取

    最近在看spring的资源获取时发现JDK里存在几种不同方式的资源获取,因比较混乱特地总结起来帮助和我一样混乱的人理解.下面是我项目的类结构图,在 src/main/java 下有两个类 Resour ...

  8. web项目打包后在代码中获取资源文件

    在web项目里面,有时代码里面需要引用一些自定义的配置文件,这些配置文件如果放在类路径下,项目经过打包后使用的相对路径也会发生变化,所以以下给出了三种解决方案. 一.properties下配置 在类路 ...

  9. Java中获取路径的各种方法

    1. java文件中获得路径 Thread.currentThread().getContextClassLoader().getResource("") //获得资源文件(.cl ...

随机推荐

  1. Python 文件操作一

    #-*- coding:utf-8 -*- #文件操作 #open()函数格式 #open(文件名,访问模式) f = open('1.md',"r") #read()没有不传参数 ...

  2. Qt 菜鸟的坑 QAbstractSocket::isValid()

    我曾经多次在 Qt socket 编程中使用 tcpSocket.isValid 来判断我当前的连接是否可用,最近写程序时才发现此法并不妥当. bool QAbstractSocket::isVali ...

  3. DPI (深度报文检测) 关于DPI的学习笔记

    关于DPI的学习笔记 先看一下定义 : DPI(Deep Packet Inspection)是一种基于数据包的深度检测技术,针对不同的网络应用层载荷(例如HTTP.DNS等)进行深度检测,通过对报文 ...

  4. 关于Unity中的旋涡特效的制作(捕鱼达人3技术)(专题八)

    Mesh--材质--Shader 1: Mesh 是网格,包括顶点,法线,纹理坐标,切线,三角形.在每一个3D模型节点里面,有一个Mesh Filter组件来提取模型里面的网格数据;2: Shader ...

  5. C艹复合类型(字符串)

    在C艹中有两种字符串形式, 一种是C-风格, 另一种是C艹风格的 初始化: char str[10] = {'a', 'c', 'd', '\0'};char str[20]= “aaa”; stri ...

  6. HttpComponents-Client学习

    HttpComponents-Client 学习 官方文档:http://hc.apache.org/httpcomponents-client-ga/tutorial/html/index.html ...

  7. Aizu_Insertion Sort

    原题链接:https://vjudge.net/problem/Aizu-ALDS1_1_A 题目描述 Write a program of the Insertion Sort algorithm ...

  8. JDBC驱动程序类型

    JDBC驱动程序是什么? JDBC驱动程序在JDBC API中实现定义的接口,用于与数据库服务器进行交互. 例如,使用JDBC驱动程序,可以通过发送SQL或数据库命令,然后使用Java接收结果来打开数 ...

  9. JAVA编程环境JDK与JRE运行环境与API核心ClassMap

    JDK(Java Development Kit)称为Java开发包或Java开发工具,是一个编写Java的Applet小程序和应用程序的程序开发环境.JDK是整个Java的核心1.Java运行环境( ...

  10. Http请求的工具

    1.火狐的插件 HttpRequester 安装方法:火狐浏览器的最右上角的菜单,打开附件组件 ,搜索:HttpRequester,重启火狐浏览器.在菜单栏的工具下可以看到 HttpRequester ...