• Java Class 利用classpath来获取源文件地址


    利用classpath来获取源文件地址

    @author ixenos

    应用场景


    			Properties props = new Properties();
    
    			/**
    			 * . 代表java命令运行的目录
    			 * 
    			 * 在java项目下,. java命令的运行目录从项目的根目录开始
    			 * 
    			 * 在web项目下, . java命令的而运行目录从tomcat/bin目录开始 所以不能使用点.
    			 */
    			// InputStream in = new FileInputStream("./src/db.properties");
    
    			/**
    			 * 使用类路径的读取方式 / : 斜杠表示classpath的根目录
    			 * 在java项目下,classpath的根目录从bin目录开始
    			 * 在web项目下,classpath的根目录从WEB-INF/classes目录开始
    			 */
    			InputStream in = JDBCUtil.class.getResourceAsStream("/db.properties");
    
    			// 加载文件信息
    			props.load(in);
    

    注意:

    1. 放在src下的文件会随同class文件自动拷贝到Java项目的bin目录中、或者web项目的WEB-INF/classes目录下

    2.   而这里如果使用 【. 相对路径】则出错,因为,【.java】命令的运行目录在Java项目中是bin,且编译后的class文件放在bin中,而在web项目中虽是tomcat/bin,但web项目编译后得到的class文件放在WEB-INF/classes目录中,这样就导致相对路径出错!

    3.   不过classpath在java和web中就有了不同的实现:

        在java项目下,classpath的根目录从bin目录开始
        在web项目下,classpath的根目录从WEB-INF/classes目录开始

       因此可以利用class文件的相对路径来获取我们原来放在src中的被拷贝的文件

    4.   下面是Class类中getResourceAsStream方法的描述:

    Finds a resource with a given name. The rules for searching resources associated with a given class are implemented by the defining class loader of the class. This method delegates to this object's class loader. If this object was loaded by the bootstrap class loader, the method delegates to ClassLoader.getSystemResourceAsStream.

    简单说,就是利用类加载器对classpath的访问,把相关文件放在类文件的相对路径,相关文件使用流来访问和修改

  • 相关阅读:
    知乎
    热磁性储存系统转载
    超薄纳米纸张 比钢强250倍转载
    TFT LCD数据存储为BMP文件的C语言代码
    GPS NMEA0183协议详解 转载
    JPG文件结构分析转载
    SD/TF 引脚
    调试错误:No Algorithm found for(转载)
    STM32 USB IAP 步骤
    追踪“善恶有报” 解开生命健康福寿秘密(转载)
  • 原文地址:https://www.cnblogs.com/ixenos/p/6292217.html
Copyright © 2020-2023  润新知