• 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。

  • 相关阅读:
    TCP概述
    拥塞窗口
    流量控制与滑动窗口
    Hadoop完全分布式安装配置完整过程
    Nagle算法
    mac安装软件后打不开,显示损坏,扔到废纸篓
    mac设置有线访问内网,无线访问外网
    linux 开机自启脚本配置
    linux中$#,$0,$1,$2,$@,$*,$$,$?的含义
    Window-server-2012显示电脑图标
  • 原文地址:https://www.cnblogs.com/drizzlewithwind/p/5721890.html
Copyright © 2020-2023  润新知