Java程序中读取外部文件时的路径问题

转自:https://www.cnblogs.com/wt20/p/8320346.html

项目经常会读取一些配置文件, 因此getResource方法便能够起到重要作用

使用时主要是两种方法, 一个是字节码文件Class类, 另一个是ClassLoader类加载器

使用Class类时有两种使用方式:

1. 使用"/"  获取到的是classpath路径

2. 不使用"/" 这就是相对路径

ClassLoader类

没有"/"的写法, 获取到的就是classpath路径

测试代码

public class GetResourceTest {

    public static void main(String[] args) {
        System.out.println(GetResourceTest.class.getResource("/test.properties").getPath());
        System.out.println(GetResourceTest.class.getResource("test1.properties").getPath());
        System.out.println(GetResourceTest.class.getClassLoader().getResource("test.properties").getPath());
        System.out.println(GetResourceTest.class.getClassLoader().getResource("/"));
    }

}

结果:

/E:/IdeaJava/studyTest/out/production/studyTest/test.properties
/E:/IdeaJava/studyTest/out/production/studyTest/com/waston/Test/test1.properties
/E:/IdeaJava/studyTest/out/production/studyTest/test.properties
null

工程包结构

以上为https://www.cnblogs.com/wt20/p/8320346.html博主所写

最近在做项目时需要对数据库的历史数据进行处理,由于对oracle数据库的定时任务不熟悉所以使用Java编写了一个定时任务

在程序中需要读取一个ctl文件,但是,如果给定目录的话,给客户运行时可能由于文件放在位置出错而不能读取到文件,尝试使用虚拟路径,没有成功,在网上搜到使用此方法可以获取到目录,尝试使用,成功。

原文地址:https://www.cnblogs.com/qinshou/p/8999204.html