zoukankan      html  css  js  c++  java
  • 【java】获取项目资源路径

     目资源路径分两种,一种是普通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("")获取, 不允许以"/开头", 默认以bin目录为根, 同上  
    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的形式存储的)

     
  • 相关阅读:
    MySQL-基础知识整理
    设计模式-适配器模式
    MySQL
    MySQL-5.7 填坑
    MySQL
    Oracle
    SQL 注入
    Apache JMeter
    AppScan
    DNS 搜索
  • 原文地址:https://www.cnblogs.com/zhuyeshen/p/11435468.html
Copyright © 2011-2022 走看看