Java Resource路径整理总结

作者:lqh 时间:2021-11-24 06:52:31 

  Java Resource路径

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

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

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

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

1)classpath

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

  1. Thread.currentThread().getContextClassLoader()

  2. clazz.getClassLoader()

  3. 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,路径
0
投稿

猜你喜欢

  • Java实现图形界面计算器

    2023-06-05 11:53:23
  • Android Studio 引用外部依赖时报错的解决方法

    2023-09-26 18:20:11
  • Java求字符串中出现次数最多的字符串以及出现次数

    2023-06-03 03:45:34
  • IDEA最新版2020.1的maven工程本地依赖仓库无法使用问题(已解决)

    2023-09-21 17:57:00
  • springboot vue测试平台开发调通前后端环境实现登录

    2021-08-13 03:54:02
  • maven profile动态选择配置文件详解

    2023-11-05 22:05:20
  • Maven属性与版本管理详细步骤分解

    2023-11-15 14:38:45
  • Day14基础不牢地动山摇-Java基础

    2023-03-21 09:04:46
  • 详解tryAcquire()、addWaiter()、acquireQueued()

    2022-07-30 10:24:05
  • Spring @Conditional注解原理解析

    2022-10-04 16:09:51
  • JAVA实现对阿里云DNS的解析管理

    2023-11-24 13:25:15
  • Lombok中@EqualsAndHashCode注解的使用及说明

    2023-11-30 04:47:05
  • Struts2下拉框实例解析

    2021-09-16 16:29:59
  • java实现简单石头剪刀布小游戏

    2021-09-17 07:25:41
  • C#复制数组的两种方式及效率比较

    2023-07-15 04:19:12
  • SpringCloud开发课程查询功能

    2022-04-21 14:22:46
  • Maven入门之使用Nexus搭建Maven私服及上传下载jar包

    2022-05-06 20:47:43
  • java实现MD5加密算法的实例代码

    2021-10-01 16:49:14
  • 使用JSONObject生成和解析json的方法

    2022-06-15 11:13:15
  • Java集合定义与用法实例总结【Set、List与Map】

    2023-11-21 08:26:40
  • asp之家 软件编程 m.aspxhome.com