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。

  • 相关阅读:
    玩转Android状态栏
    自己制作 Android Vector Asset 矢量图
    android studio配置模拟器
    Android数据库使用指南(下)
    Android数据库使用指南(上)
    四种常见的 POST-------- content-type数据提交方式
    json格式化
    js删除cookie的方法
    js中box和box()的区别
    synchronized加static区别
  • 原文地址:https://www.cnblogs.com/drizzlewithwind/p/5721890.html
Copyright © 2011-2022 走看看