获取项目中文件路径

本文详细介绍了在Java项目中获取文件路径的各种方法,包括Class.getResource和ClassLoader.getResource的区别与联系,以及org.apache.ibatis.io.Resources的使用。同时,文章讨论了在WEB项目中如何获取根目录的资源,并指出不同操作系统下获取相对路径的差异问题。
摘要由CSDN通过智能技术生成

获取项目中文件路径


Class.getResource 与 ClassLoader.getResource

  • 区别
方式 入参 返回
Class.getResource() 文件路径参数,绝对路径或相对路径(相对于该class类) URL
ClassLoader.getSystemResource() 文件路径参数,相对路径(相对于项目的包的根目录来解析路径的) URL
  • 联系
// Class.getResource 底层实现实质是调用 ClassLoader.getResource 方法
    public java.net.URL getResource(String name) {
        name = resolveName(name);
        ClassLoader cl = getClassLoader0();
        if (cl==null) {
            // A system class.
            return ClassLoader.getSystemResource(name);
        }
        return cl.getResource(name);
    }

    /**
     * Add a package name prefix if the name is not absolute Remove leading "/"
     * if name is absolute
     */
    private String resolveName(String name) {
        if (name == null) {
            return name;
        }
        if (!name.startsWith("/")) {
            Class c = this;
            while (c.isArray()) {
                c = c.getComponentType();
            }
            String baseName = c.getName();
            int index = baseName.lastIndexOf('.');
            if (index != -1) {
            	// 将文件路径信息中的.替换为/
            	// 即将com.study改为com/study
                name = baseName.substring(0, index).replace('.', '/')
                    +"/"+name;
            }
        } else {
        	// 如果是以/开头,将绝对路径改为相对路径
            name = name.substring(1);
        }
        // ClassLoader 解析文件的相对路径
        return name;
    }
    
  • 示例
    • 准备
      项目结构图

    • 代码

// Eclipse 
// JDK 1.6
package com.study.test;

import java.net.U
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值