java读取资源路径的几种实现方式

 更新时间:2025年02月13日 08:49:37   作者:worilb  
文章总结了Java读取资源路径的几种方式,并指出了在JUnit测试文件和普通类中读取资源路径的区别,普通类中读取资源路径时,只返回主目录,而JUnit测试文件中可以精确到所在模块

java读取资源路径几种方式

    @Test
    public void path() throws IOException {
        System.out.println("用户当前工作目录"+System.getProperty("user.dir"));
        File directory = new File("");
        String path2 = directory.getCanonicalPath();
        System.out.println("当前工作目录1:"+path2);
        String path3 = directory.getAbsolutePath();
        System.out.println("当前工作目录2:"+path3);

        String path = ClassUtils.getDefaultClassLoader().getResource("").getPath();
        System.out.println("类加载器返回默认路径:"+path);
        String path1 = ResourceUtils.getURL("classpath:").getPath();
        System.out.println("ResourceUtils返回默认路径:"+path1);
        String resourcePath = Thread.currentThread().getContextClassLoader().getResource("").getPath();
        System.out.println("resourcePath返回默认路径:"+resourcePath);


        ClassPathResource classPathResource = new ClassPathResource("excel/xx.xlsx");
        System.out.println("ClassPathResource返回资源路径:"+classPathResource.getURL());
        URL resource = this.getClass().getClassLoader().getResource("excel/xx.xlsx");
        System.out.println("类加载器返回资源路径:"+resource.getPath());
        URL url = ResourceUtil.getResource("excel/xx.xlsx");
        System.out.println("ResourceUtil返回资源路径:"+url.getPath());


    }

注意:

以上是在Junit测试文件中的结果

工作可以精确到所在模块,而普通类里打印是只有主目录没有模块的。

如下:

  public static void main(String[] args) throws IOException {
        System.out.println("用户当前工作目录"+System.getProperty("user.dir"));

        File directory = new File("");
        String path2 = directory.getCanonicalPath();
        System.out.println("当前工作目录1:"+path2);
        String path3 = directory.getAbsolutePath();
        System.out.println("当前工作目录2:"+path3);


    }

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java多线程通信wait()和notify()代码实例

    Java多线程通信wait()和notify()代码实例

    这篇文章主要介绍了Java多线程通信wait()和notify()代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Map按单个或多个Value排序当Value相同时按Key排序

    Map按单个或多个Value排序当Value相同时按Key排序

    Map可以先按照value进行排序,然后按照key进行排序。 或者先按照key进行排序,然后按照value进行排序,这样操作都行,这篇文章主要介绍了Map按单个或多个Value排序,当Value相同时按Key排序,需要的朋友可以参考下
    2023-02-02
  • Linux中Java开发常用软件安装方法总结

    Linux中Java开发常用软件安装方法总结

    这篇文章主要介绍了Linux中Java开发常用软件安装方法总结,需要的朋友可以参考下
    2020-02-02
  • 深入理解mybatis的ParamNameResolver

    深入理解mybatis的ParamNameResolver

    ParamNameResolver是 MyBatis 中的一个重要组件,它为 MyBatis 提供了一种方便的方式来获取方法参数的名称,本文主要介绍了深入理解mybatis的ParamNameResolver,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • SpringBoot3安全管理操作方法

    SpringBoot3安全管理操作方法

    这篇文章主要介绍了SpringBoot3安全管理,在实际开发中,最常用的是登录验证和权限体系两大功能,在登录时完成身份的验证,加载相关信息和角色权限,在访问其他系统资源时,进行权限的验证,保护系统的安全,文中有详细的操作步骤,需要的朋友可以参考下
    2023-08-08
  • MyBatis中@One的实现示例

    MyBatis中@One的实现示例

    @One注解在MyBatis中用于定义一对一关系映射,通过关联查询获取其他表的数据,并将其映射到另一个实体类上,下面就来具体介绍一下,感兴趣的可以了解一下
    2025-11-11
  • Java中的原子性、可见性和有序性示例详解

    Java中的原子性、可见性和有序性示例详解

    原子性、可见性、有序性是多线程编程中最重要的几个知识点,由于多线程情况复杂,如何让每个线程能看到正确的结果,这是非常重要的,这篇文章主要介绍了Java中原子性、可见性和有序性的相关资料,需要的朋友可以参考下
    2026-01-01
  • springboot启动时如何指定spring.profiles.active

    springboot启动时如何指定spring.profiles.active

    这篇文章主要介绍了springboot启动时如何指定spring.profiles.active问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • 使用JWT作为Spring Security OAuth2的token存储问题

    使用JWT作为Spring Security OAuth2的token存储问题

    这篇文章主要介绍了使用JWT作为Spring Security OAuth2的token存储,大家经常使用的方法有两种一种是使用JWT作为Token传递,一种是使用Redis存储Token,资源服务器本地访问Redis校验Token,需要的朋友可以参考下
    2021-12-12
  • Java中的内存泄漏

    Java中的内存泄漏

    这篇文章主要介绍了Java中的内存泄漏的相关资料,帮助大家更好的理解和学习Java,感兴趣的朋友可以了解下
    2020-11-11

最新评论