加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

【java】获取项目资源路径

发布时间:2020-12-15 07:53:49 所属栏目:Java 来源:网络整理
导读:?目资源路径分两种,一种是普通Java项目的资源路径,另一种是JavaEE项目的资源路径。 ? 获取Java项目的包(源码下的包 或者 jar包)的资源路径 ? Java代码?? //?方法1:通过this.getClass().getResoure("")获取,?有"/"开头表示以bin目录为根目录,?没"/"开头表

?目资源路径分两种,一种是普通Java项目的资源路径,另一种是JavaEE项目的资源路径。

?

  • 获取Java项目的包(源码下的包 或者 jar包)的资源路径

?

Java代码??

  1. //?方法1:通过this.getClass().getResoure("")获取,?有"/"开头表示以bin目录为根目录,?没"/"开头表示以当前文件夹为根目录???
  2. this.getClass().getResource("/").getFile();??
  3. ??????????
  4. //?方法2:通过this.getClass().getClassLoader().getResource(""),?不允许以"/"开头,?默认以bin目录为根,?类似方法1中以"/"开头的情况??
  5. this.getClass().getClassLoader().getResource("").getFile();??
  6. ??????????
  7. //?方法3:通过ClassLoader.getSystemResource("")获取,?不允许以"/开头",?同上??
  8. ClassLoader.getSystemResource("").getFile();??
  9. ??????????
  10. //?方法4:通过Thread.currentThread().getContextClassLoader().getResource("")获取,?同上【推荐】??
  11. Thread.currentThread().getContextClassLoader().getResource("").getFile();??
  12. ??????????
  13. //?方法5:通过new?File("bin").getCanonicalPath()获取,?有"/"开头,?则以系统盘为根,?没"/"开头,?表示以bin目录为根???
  14. new?File("bin").getCanonicalPath();??
  15. ??????????
  16. //?方法6:通过System.getProperty("user.dir")?+?File.separator?+?"bin"来获取(不推荐)??
  17. System.getProperty("user.dir")?+?File.separator?+?"bin";??

? ? ? ?据说方法4的系统兼容性最好,所以推荐第4种方法获取资源路径。

?

????

?

?

  • 获取JavaEE项目的资源路径

????对于获取JavaEE中的资源,其实就是获取WEB-INF目录的父目录下的资源,而且src的源码编译后的class文件,也会存放在WEB-INF/classes文件夹下,所以获取JavaEE资源的方法,也适用于获取Java普通资源,方法如下:

Java代码??

  1. //?getRealPath()方法中的参数,?是否以"/"开头效果都是一样的,?都是以WEB-INF目录的父目录为根目录进行查找??
  2. request.getServletContext().getRealPath("");??

?

?

?

?

总结:

  1. 通过getClassLoader().getResource()的方法,只能获取package(包括jar包的资源)里面的资源

    ?

  2. 若想获取项目下普通目录的资源,可以通过new File(path)的方式获取,路径默认以项目路径为根,以bin开始表示获取bin目录,以src开始表示获取src目录,以XXX开始表示获取项目下XXX目录,该方法最灵活,就算是JavaEE项目同样适用(例如WecContent,可以使用new File("WebContent")获取),唯一缺点就是不能获取jar里面的资源(因为jar包的资源不是以普通File的形式存储的)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读