zoukankan      html  css  js  c++  java
  • classpath获取--getResource()

    在java中的API里,有两种方式来使用classpath读取资源。

    1. Class的getResource()

    2. ClassLoader的getResource()

    但是两者有一定区别,运行以下程序:

    package zero.xml.config;
    
    public class Main {
    
        public static void main(String[] args) {
            new Main().testGetResource();
        }
        
        public void testGetResource() {
            
            System.out.println(Main.class.getResource("/").getPath());
            System.out.println(Main.class.getResource("/app.properties").getPath());
            System.out.println(Main.class.getResource("").getPath());
            System.out.println(Main.class.getResource("app.properties").getPath());
            System.out.println("-------------------");
            System.out.println(this.getClass().getResource("/").getPath());
            System.out.println(this.getClass().getResource("/app.properties").getPath());
            System.out.println(this.getClass().getResource("").getPath());
            System.out.println(this.getClass().getResource("app.properties").getPath());
            System.out.println("-------------------");
            System.out.println(Main.class.getClassLoader().getResource("").getPath());
            System.out.println(Main.class.getClassLoader().getResource("app.properties").getPath());
            System.out.println(Main.class.getClassLoader().getResource("zero/xml/config").getPath());
            System.out.println(Main.class.getClassLoader().getResource("zero/xml/config/app.properties").getPath());
        }
    }

    得到输出为:

    /home/rain/git/spring-self-learn/bin/
    /home/rain/git/spring-self-learn/bin/app.properties
    /home/rain/git/spring-self-learn/bin/zero/xml/config/
    /home/rain/git/spring-self-learn/bin/zero/xml/config/app.properties
    -------------------
    /home/rain/git/spring-self-learn/bin/
    /home/rain/git/spring-self-learn/bin/app.properties
    /home/rain/git/spring-self-learn/bin/zero/xml/config/
    /home/rain/git/spring-self-learn/bin/zero/xml/config/app.properties
    -------------------
    /home/rain/git/spring-self-learn/bin/
    /home/rain/git/spring-self-learn/bin/app.properties
    /home/rain/git/spring-self-learn/bin/zero/xml/config
    /home/rain/git/spring-self-learn/bin/zero/xml/config/app.properties

    也就是:

    1. 如果想获得classpath,使用以下方法:

    System.out.println(Main.class.getResource("/").getPath());
    
    System.out.println(Main.class.getClassLoader().getResource("").getPath());

    2. 如果想获得classpath下的文件,使用以下方法:

    System.out.println(Main.class.getResource("/app.properties").getPath());
    
    System.out.println(Main.class.getClassLoader().getResource("app.properties").getPath());

    3. 如果想获得当前类(比如zero.xml.config.Main)的路径,使用以下方法:

    System.out.println(Main.class.getResource("").getPath());
    
    System.out.println(Main.class.getClassLoader().getResource("zero/xml/config").getPath());

    4. 如果想获得当前类路径下的文件,使用以下方法:

    System.out.println(Main.class.getResource("app.properties").getPath());
    
    System.out.println(Main.class.getClassLoader().getResource("zero/xml/config/app.properties").getPath());

    注意,如果获取的文件或路径不存在,getResource()会返回null。比如,getClassLoader().getResource("/")就会返回null。

  • 相关阅读:
    Redis源码分析(三十四)--- redis.h服务端的实现分析(1)
    Redis源码分析(三十四)--- redis.h服务端的实现分析(1)
    Redis源码分析(三十三)--- redis-cli.c客户端命令行接口的实现(2)
    C# 接口
    C#属性有什么作用
    字节跳动面试总结
    大厂Redis高并发场景设计,面试问的都在这!
    上班摸鱼 手敲求水仙花数的代码!
    有一群志同道合的程序员朋友是怎样的体验?
    SpringBoot四大核心之自动装配——源码解析
  • 原文地址:https://www.cnblogs.com/drizzlewithwind/p/5721890.html
Copyright © 2011-2022 走看看