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

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

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

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

  • 获取JavaEE项目的资源路径

对于获取JavaEE中的资源,其实就是获取WEB-INF目录的父目录下的资源,而且src的源码编译后的class文件,也会存放在WEB-INF/classes文件夹下,所以获取JavaEE资源的方法,也适用于获取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的形式存储的)

 

【java】获取项目资源路径的更多相关文章

  1. 相对路径和绝对路径的区别,java获取项目访问路径的方法

    相对路径和绝对路径的区别 在HTML里只要涉及文件的地方(如超级链接.图片等)就会涉及绝对路径与相对路径的概念. .绝对路径 绝对路径是指文件在硬盘上真正存在的路径.例如“bg.jpg”这个图片是存放 ...

  2. java 获取项目绝对路径

    String classPath = Thread.currentThread().getContextClassLoader().getResource("").getPath( ...

  3. Java中获取项目根路径和类加载路径的7种方法

    引言 在web项目开发过程中,可能会经常遇到要获取项目根路径的情况,那接下来我就总结一下,java中获取项目根路径的7种方法,主要是通过thisClass和System,线程和request等方法. ...

  4. java 或者 js 获取项目访问路径(域名)

    /** * 获得站点url * @return */ public String getWebUrl(){ String url = getRequest().getScheme() + " ...

  5. java获取classpath文件路径空格转变成了转义字符%20的问题

    java获取classpath文件路径空格转变成了转义字符%20的问题 这个问题很纠结,服务器的文件路径带有空格,空格被转化是%20了,悲剧就出现了 下面展示一段代码String path = get ...

  6. java获取文件的路径问题

    java获取文件的路径问题 在java中读取读取文件,经常因为路径的问题找不到,此文用于记录如何定位文件的简单方法. 本基于springboot做的测试,主要是构建工程方便,所用的方法都是JDK中的方 ...

  7. js获取项目根路径

    //js获取项目根路径,如: http://localhost:8083/uimcardprj function getRootPath(){ //获取当前网址,如: http://localhost ...

  8. Java获取项目当前请求的全部URL,Java获取Referer,Java获取完整链接地址URL

    Java获取项目当前请求的全部URL,Java获取Referer,Java获取完整链接地址URL >>>>>>>>>>>>> ...

  9. html 获取项目根路径

    html 获取项目根路径 function getContextPath(){ var pathName = document.location.pathname; //当前文件的绝度路径 var i ...

随机推荐

  1. C#解决界面闪烁

    添加缓冲: private void SetDoubleBuffer() { base.SetStyle( ControlStyles.OptimizedDoubleBuffer | ControlS ...

  2. js修改当前页面地址栏参数

    利用HTML5 history新特性replaceState方法可以修改当前页面地址栏参数,示例代码: //选择日期后改变地址栏 var urlSearch = location.href; var ...

  3. O050、Create Volume 操作 (Part I)

    参考https://www.cnblogs.com/CloudMan6/p/5603312.html   前面已经学习了Cinder的架构和相关组件,从本节开始详细分析 Cinder 的各种操作,首先 ...

  4. 高性能SQLServer分页语句

    第一种方法:效率最高 SELECT TOP 页大小 * FROM( SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1  ...

  5. php三种排序算法

    1. <?php /** * 快速排序不费空间也节省时间 */ $arr=array(5,1,8,2,6,4,9,3,7); // $arr=array(1,2,3,4,5,6,7,8,9); ...

  6. Ceph自动化部署----Ceph-ansible

    目录 Ceph自动化部署----Ceph-ansible 一.前言--Ceph的几种不同的部署方式 二.使用Ceph-ansible部署Ceph Ceph自动化部署----Ceph-ansible 一 ...

  7. 第三章·Logstash入门-部署与测试

    1.Logstash环境准备与安装 Logstash环境准备 关闭防火墙 #CentOS6 关闭防火墙 [root@elkstack01 ~]# /etc/init.d/iptables stop # ...

  8. Linux内核网络报文简单流程

    转:http://blog.csdn.net/adamska0104/article/details/45397177 Linux内核网络报文简单流程2014-08-12 10:05:09 分类: L ...

  9. 【wifi移植 3】开发板wifi自动获取IP

    内核版本:3.4.61 1. 配置内核,支持DHCP ~/kernel$ make menuconfig [*] Networking support  ---> Networking opti ...

  10. 解决国内安装tensorflow, opencv等安装不成功或下载太慢问题

    解决国内安装tensorflow, opencv等安装不成功或下载太慢问题 复制自博客:https://blog.csdn.net/jorg_zhao/article/details/80075293 ...