这里总结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. missing gradle project information

    需要在android studio 中配置gradle的代理,当然是用goagent了.打开setting->gradle->Gradle VM Options:-Dhttp.proxyH ...

  2. altium designer 软件常用技巧总结(实时更新)

    1.在使用altium designer画PCB时,在PCB界面画线找不到焊盘的中心点,将输入法切换到英文状态,按键盘D---O---勾选snap to object hotspots即可. 2.想高 ...

  3. 【转】Android下使用Properties文件保存程序设置

    原文:http://jerrysun.blog.51cto.com/745955/804789 废话不说,直接上代码.    读取.properties文件中的配置:  String strValue ...

  4. CentOS 6.8 安装 RabbitMQ

    放上来做个备份. 1.下载RabbitMQ http://www.rabbitmq.com/download.html 选择 RHEL/CentOS 6.x 下载即可. 或者 http://www.r ...

  5. 用OpenGL实现粒子的随机运动

    一.目的: 掌握OpenGL中粒子的绘制.随机数的使用 二.代码: Github地址 #include "stdafx.h" #include <GL/glut.h> ...

  6. eclipse里面的常用快捷键

    eclipse里面的常用快捷键:代码实战 package com.study.lgs; import java.awt.List; import java.io.FileInputStream; im ...

  7. NetBeans IDE集成Maven

    NetBeans6.7更新版本已经内置对Maven支持.如遇以前的版本,Maven插件在插件管理器中可用.我们正在使用NetBeans在这个例子中使用6.9. 在NetBeans一些特点如下 您可以从 ...

  8. unity---gameScreen 的Stats参数

    Unity Stats 面板介绍 原创 2016年06月12日 10:06:12 1544 0 3 Time per frame and FPS (每帧的时间和FPS):处理和渲染一个游戏框架(以及由 ...

  9. tp5的学习

    1.安装,官网下载 2.访问配置:http://localhost/App/public/ 3.入口文件,项目目录/public // 定义应用目录 define('APP_PATH', __DIR_ ...

  10. lrzsz离线安装方法

    lrzsz离线安装方法 到网上下载lrzsz安装包,这里以lrzsz-0.12.20.tar.gz为例 2 打开终端 cd 到安装包所在目录 tar zxvf lrzsz-0.12.20.tar.gz ...