Class和ClassLoader.getResource获取资源

资源就是系统内、项目内的各种文件。在Java中获取可以用File类和Class.getResource获取资源,直观的说,File是依赖于文件系统和操作系统的,通过相对和绝对路径定位,使用File接口可以用于获取系统内任何路径下的普通文件。Class和ClassLoader可以用于获取项目环境中的资源,‘环境中’的具体定义就是classpath。classpath相当于getResource参数的跟目录,ClassLoader.getResource是只能从这个根目录开始定位资源,Class.getResource的参数字符串如果以‘/’开始,就表示从classpath开始。

  • classpath包括写什么

classpath并非一个目录,其是由很多目录组成,具体包含哪些目录可以在项目的根目录中的.classpath文件中看到,如下例子,Test项目下的.classpath

也就是说,项目下的src,bin目录都包含在classpath中,当使用ClassLoader.getResource和Class.getResource("/****")时会从这些目录中一次查询有没有对应的资源。ClassLoader.getResource是不认识以“/”开始的字符串的,也就是ClassLoader.getResource("/")将返回null,如果要获取根目录,可以通过ClassLoader.getResource(""),其得到的是bin目录的URL,也就是说,通过是得到.class文件位置对应的classpathentry,而不是.java文件对应的classpathentry。

Class.getResource有两种方式,第一种是通过以"/"开始的绝对路径,"/"表示上面的classpath,Java会逐一查询每个classpathentry对应位置,等价于ClassLoader.getResource("**/**"),第二种方式通过Class.getResource("***/***"),这是相对于Class实例对象的.class文件所在的目录位置,而非调用getResource类的.class文件所在位置的路径。也就是说,如果在Test.java里面调用Test2.class.getResource("***/***"),则"***/***"是相对Test2.class文件所在目录的路径。

Class和ClassLoader.getResource获取资源,布布扣,bubuko.com

时间: 2024-11-08 19:23:02

Class和ClassLoader.getResource获取资源的相关文章

class getResourceAsStream 和 classloader getResourceAsStream获取资源的不同

工程目录结构: prj(工程根目录) cn json classloader GetResourceByClassAndClassLoader.Java beans.xml /** * */ package cn.json.classloader; import java.io.InputStream; /** * @author json * * @date 2014-5-7 * * @version 1.0 */ public class GetResourceByClassAndClass

用ClassLoader获取资源

最近在写Servlet的时候,看到之前的代码里都是这样写的: InputStream is = xxx.class.getResourceAsStream(filePath); 但是我用另一种写法: ClassLoader.getSystemResourceAsStream(filePath); 在本地测试的时候也是行得通的,于是把Servlet扔到服务器上,但是到了服务器上,第二种写法就跑不通了.今天找到了下面这个文章: ClassLoader.getSystemResourceAsStrea

[Java开发之路](18)关于Class.getResource和ClassLoader.getResource的路径问题

Java中取资源时,经常用到Class.getResource和ClassLoader.getResource.昨天老师讲解题目时候,问我们为什么你们都是在文件前家上"/": String path = Resources.class.getResource("/a.txt").getPath(); 注:在Resources文件下创建了a.txt文件 我想我反正是试出来的,不使用"/"不行.为了正式解答心中的疑惑,我们正式来看看Resources

关于Class.getResource和ClassLoader.getResource的路径问题

Java中取资源时,经常用到Class.getResource和ClassLoader.getResource,这里来看看他们在取资源文件时候的路径问题. 转自:http://www.cnblogs.com/yejg1212/p/3270152.html Class.getResource(String path) path不以’/'开头时,默认是从此类所在的包下取资源: path 以’/'开头时,则是从ClassPath根下获取: 什么意思呢?看下面这段代码的输出结果就明白了: package

Class.getResource和ClassLoader.getResource的区别分析

Class.getResource(String path)path不以'/'开头时,默认是从此类所在的包下取资源:path以'/'开头时,则是从项目的ClassPath根下获取资源.在这里'/'表示ClassPathJDK设置这样的规则,是很好理解的,path不以'/'开头时,我们就能获取与当前类所在的路径相同的资源文件,而以'/'开头时可以获取ClassPath根下任意路径的资源.如下所示的例子: 1 2 3 4 5 6 7 8 public class Test { public stat

Class.getResource和ClassLoader.getResource的路径写法

Java中取资源时,经常用到Class.getResource和ClassLoader.getResource,这里来看看他们在取资源文件时候的路径问题. Class.getResource(String path) path 不以’/'开头时,默认是从此类所在的包下取资源:以’/'开头时,则是从ClassPath根下获取: 同样用法的还有Class.getResource和Class.getResourceAsStream. Class.getClassLoader().getResource

Class.getResource和ClassLoader.getResource区别与分析

零. 前言 在一个获取文件路径的代码内容上发现单元测试出现NullPointer, 但是这段代码却在服务器正常运行了两年多, 借此机会想认真探索下这两个方法的区别. 一. 区别 区别从代码输出结果来看比较清晰, 文件结构图: 以下为在多个场景下使用方式的代码: package com.wenniuwuren.test; /** * 获取文件路径 * Created by wenniuwuren on 15/8/14. */ public class GetResourceTest { publi

Java Class.getResource和ClassLoader.getResource的使用

Java中获取资源文件的时候,经常会用到Class.getResource和ClassLoader.getResource,本文给大家说一下这两者方法在获取资源文件时的路径差异. Class.getResource(String path) path不以'/'开头时,默认是从此类所在的包下取资源: path以'/'开头时,则是从项目的ClassPath根下获取资源.在这里'/'表示ClassPath JDK设置这样的规则,是很好理解的,path不以'/'开头时,我们就能获取与当前类所在的路径相同

Spring Resource接口获取资源

本文转自http://elim.iteye.com/blog/2016305 感谢作者 Resource 所有的资源都被可以通过 InputStream 这个类来获取,所以也屏蔽了资源的提供者 ResourceLoader 接口负责资源的统一加载 通过Spring Resource接口获取资源 目录 1       Resource简介 2       通过ResourceLoader获取资源 3       在bean中获取Resource的方式 1       Resource简介 在Spr