Java中获取资源文件的方法总结
这里总结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中获取资源文件的方法总结的更多相关文章
- java基础知识3--如何获取资源文件(Java中获取资源文件的url)
java开发中,常见的resource文件有:.xml,.properties,.txt文件等,后台开发中经常用到读取资源文件,处理业务逻辑,然后返回结果. 获取资源文件的方法说明getResourc ...
- java中读取资源文件的方法
展开全部 1.使用java.util.Properties类的load()方法 示例: //文件在项目下.不是在包下!! InputStream in = new BufferedInputStrea ...
- java 中获得 资源文件方法
1 java 中获取资源文件的方法 项目目录如下 获取当前项目的目录路径 方法一:使用类名 MergeDocHandler.class.getClassLoader().getResource(&qu ...
- springboot jar包运行中获取资源文件
1. 今天晚上写了一个程序,基于Spring boot的一个小网站,发现使用FileUtils.class.getResource(path)来获取jar包中的资源文件并不能成功,其路径很奇怪 fil ...
- java之获取资源文件
背景介绍 在java程序中有时我们需要加载项目中的某些资源文件(如:config.properties之类),以便获取里面的值,这样可以避免某些需要经常修改的数据硬编码入业务程序中 实现方式 实现这种 ...
- Java中的资源文件加载方式
文件加载方式有两种: 使用文件系统自带的路径机制,一个应用程序只能有一个当前目录,但可以有Path变量来访问多个目录 使用ClassPath路径机制,类路径跟Path全局变量一样也是有多个值 在Jav ...
- 说说Java中的资源文件的读取
最近在看spring的资源获取时发现JDK里存在几种不同方式的资源获取,因比较混乱特地总结起来帮助和我一样混乱的人理解.下面是我项目的类结构图,在 src/main/java 下有两个类 Resour ...
- web项目打包后在代码中获取资源文件
在web项目里面,有时代码里面需要引用一些自定义的配置文件,这些配置文件如果放在类路径下,项目经过打包后使用的相对路径也会发生变化,所以以下给出了三种解决方案. 一.properties下配置 在类路 ...
- Java中获取路径的各种方法
1. java文件中获得路径 Thread.currentThread().getContextClassLoader().getResource("") //获得资源文件(.cl ...
随机推荐
- 初步认识 LESS,我要开始学习LESS啦!
LESS 是一个流行的样式表语言,它提供了 CSS3 也未曾实现的多种功能,让您编写 CSS 更加方便,更加直观.LESS 已经被广泛使用在多种框架中 ( 例如:BootStrap).本文将介绍 LE ...
- IDEA 在某个工程下一个module如何使用另一个module中的资源文件(.xml .prop等)
问题如题,经google,解决方案有四种,选择了比较直观有效的一种罗列如下: 因为项目采用maven管理,所以我们可以在module2下的pom.xml制定<resources>的路径,让 ...
- 解决git pull 每一次都需要输入密码的问题
方法1: 当我们配置好我们的git以后呢,我们可以在配置文件~/.gitconfig 或 ~/.config/git/config 文件里加入这么两行: [credential] helper = s ...
- Linq to Entity 动态拼接查询条件(重点是OR)
public static class PredicateExtensions { /// <summary> /// 机关函数应用True时:单个AND有效,多个AND有效:单个OR无效 ...
- Java内存、CPU占用率过高
windows下揪出java程序占用cpu很高的线程 并找到问题代码 死循环线程代码 linux下查找java进程占用CPU过高原因 Java 占用CPU使用率很高的分析 记一次线上Java程序导致服 ...
- 详细分析Java中断机制[转]
1. 引言 当我们点击某个杀毒软件的取消按钮来停止查杀病毒时,当我们在控制台敲入quit命令以结束某个后台服务时……都需要通过一个线程去取消另一个线程正在执行的任务.Java没有提供一种安全直接的方法 ...
- ajax 把返回结果作为参数传递
这个涉及到js的异步执行了,程序本身是同步执行的,到了getJSON这里的时候,这个函数是异步的,而 load_val这个函数是同步的,你需要这样来异步返回这个值 function load_val( ...
- Office在线预览及PDF在线预览的实现方式
原文链接:http://www.officeweb365.com/officetoview.html 一.服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览 微软方:利用Office ...
- RedHat 6.4 安装WAS 7.0 启动失败com.ibm.websphere.ssl.SSLException
问题描述 RedHat 6.4 安装 WAS 7.0,安装完成之后启动WAS失败,异常信息如下: [5/7/15 9:59:55:185 CST] 00000000 WsServerImpl E WS ...
- Console程序后台运行
[DllImport("User32.dll", EntryPoint = "FindWindow")] private static extern IntPt ...