`
enetor
  • 浏览: 183694 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java Resource路径总结

阅读更多

来自:http://blog.csdn.net/cutesource/archive/2011/01/15/6141768.aspx

首先一点很重要,Java中不存在标准的相对路径,各种相对路径取资源的方式都是基于某种规则转化为绝对路劲

然后一点也很重要,绝对不要直接使用绝对路径,否则死得很难看

基于以上两点,总结Resource路径问题无非归结为一点:找基点,也就是在某种环境下(web、j2ee或jar包等)通过合适的方式找到一个稳定的基点,然后通过这个基点找到你要的resource

Java中的基点有哪些呢?大致总结一下有以下几种:

1)classpath

如果你要找的资源在classpath下,那么通过classpath这个基点是比较合适的,而取得这个基点方式主要是通过ClassLoader来,具体方法就是 ClassLoader.getResource(String name),而取得ClassLoader的方式很多,比如:

  • Thread.currentThread().getContextClassLoader()
  • clazz.getClassLoader()
  • ClassLoader. getSystemClassLoader()

ClassLoader找resource的实现原理就是先递归在parent classLoader中从所在classpath里加载resource(最终如何加载JDK未开源),如果所有层级的classLoader都未找 到,则调用findResource方法来找,而这个方法是暴露给自制classLoader来现实的,因此给了在classpath之外加载 resource的机会。

2) 当前用户目录

就是相对于System.getProperty("user.dir" )返回的路径, 对于一般项目,这是项目的根路径。对于JavaEE服务器,这可能是服务器的某个路径。这个并没有统一的规范! 然而, 默认情况下,java.io 包中的类总是根据当前用户目录来分析相对路径名,如new File("xxx"),就是在 System.getProperty("user.dir" )路径下找xxx文件。因此,通过这种方式来定位文件可能会出现移植问题。

3) Web应用程序的根目录

在Web应用程序中,我们一般通过ServletContext.getRealPath("/" )方法得到Web应用程序的根目录的绝对路径。


掌握了上面几个基点,就能很轻松得定位你要找的resource,只不过要清晰地认识到不要只图一时快活,而不管将来移植的死活,要确保能任何环境下(j2se or web,windows or linux)不出问题。

分享到:
评论

相关推荐

    Java Resource路径整理总结

    主要介绍了 Java Resource路径整理总结的相关资料,需要的朋友可以参考下

    java获取路径的各种方法

    基本概念的理解绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:C:xyz est.txt 代表了test.txt文件的绝对路径。http://www.sun.com/index.htm也代表了一个URL绝对路径。相对...

    Java使用路径通配符加载Resource与profiles配置使用详解

    主要介绍了Java使用路径通配符加载Resource与profiles配置使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    解决java打包之后无法加载静态资源的问题SWTResourceManager.java源码

    这是因为通过class.getResource()方法在IDEA中运行的路径和生成jar包获取的的路径是不同的。打成jar包后,获取图片的路径中有"xxx.jar!"这里面的内容是不能够被操作系统识别出来的,因此直接通过路径来获取文件是不...

    JAVA获取文件绝对路径的方法

    主要介绍了JAVA获取文件绝对路径的方法,涉及针对文件路径的操作技巧,需要的朋友可以参考下

    Java获取*路径实现探讨

    (1)、request.getRealPath(“/”);//不推荐使用获取工程的根路径 (2)、...//获取工程的根路径,这个方法比较好用,可以直接在servlet和jsp中使用 (4)、 this.getClass().getClassLoader().getResource(“”).getPath();

    Java Resource Finder-开源

    用于在类路径中搜索资源(例如类或文件)的Java工具。 拖放界面,用于将新的jar添加到您的搜索路径。 对于解决那些未找到类的问题(例如java.lang.ClassNotFoundException和java.lang.NoClassDefFoun)很有用

    Java路径问题解决方案汇集

    Java路径中的空格问题  1、 URLTest.class.getResource(/).getPath();  URLTest.class.getResource(/).getFile();  URLTest.class.getClassLoader().getResource().getPath();  Thread.current...

    如何解决java html转pdf图片不显示问题的源码范例(由浅入深代码范例和详细说明).docx

    如何解决java html转pdf图片不显示问题的源码范例(由浅入深代码范例和详细说明)

    maven相关资料

    // Resource resource = new ClassPathResource("appcontext.xml"); // BeanFactory factory = new XmlBeanFactory(resource); // 用classpath路径 // ApplicationContext factory = new ...

    基于beetl的java后台模板

    2.在resource目录下的dbconfig.properties文件,在这里修改生成配置,主要修改一些路径和包名 3.确认好路径正确后,就可以开始生产三层和mapper了。 4.生成方法,调用com.edu.cn.beetlUtil.beetl这里面的main方法...

    java_eclipse_补丁生成器

    01、设置文件路径resource/filePath.properties #补丁存放路径 toFileURL=C:/Users/02/Desktop #工程源码所在目录 fromFileURL=F:/workspace #工程名称 proNanme=brd_boss 02、设置升级的文件列表resource/...

    java类所在工程路源代码

    java类所在工程路源代码String path=this.getClass().getResource("/").getPath(); xmlpath=xmlpath.replaceAll( "%20"," ");

    java完整实现各种类型的文件上传和下载

    3.如果是eclipse开发工具,上传之后的文件保存在路径D:\develop\resource\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\UploadAndDownload\WEB-INF\upload 4.其中D:\develop\resource为项目所在...

    springboot如何获取相对路径文件夹下静态资源的方法

    主要介绍了springboot如何获取相对路径文件夹下静态资源的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Java™ Servlet 规范.

    其他的 Java 平台规范 .......................................................................................................................................3 其他重要参考资料 ............................

    Springboot项目打war包docker包找不到resource下静态资源的解决方案

    今天小编就为大家分享一篇关于Springboot项目打war包docker包找不到resource下静态资源的解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    百度翻译源码java-translation_utils_jar:translation_utils_jar

    百度翻译源码java Auto translation Android resource strings.xml jar util. personal translation ...一个能批量自动翻译Android资源文件的java...指定原文件路径,一次只能指定一个源文件。 -h --help Get help infor

    java-property-utils-1.9.1等.zip

    需要配置cors全称是"跨域资源共享"(Cross-origin resource sharing)。以tomcat为例子在 一. 在tomcat的lib目录下添加jar包cors-filter-1.5.0.1.jar,java-property-utils-1.9.jar 二. tomcat路径下conf/web.xml...

    Java-Web程序设计(PPT).pptx

    1.2.1 URL简介 URL 是 UniformResource Locator 的缩写,表示统一资源定位器,它是专为标识网络上的资源位置而设定的一种编码地址方式,即俗称:网址。 URL组成:应用层协议、主机 IP 地址或域名、协议端口号、资源...

Global site tag (gtag.js) - Google Analytics