java使用Class类的getResource方法读取文件遇到的问题和解决方案

简介: java使用Class类的getResource方法读取文件遇到的问题和解决方案

一、问题和现象

首先看一下,项目结构,以及需要读取的图片文件位置,绿色的为java类以及图片文件

读取代码,直接这样读取文件运行,可以吗?
public static void main(String[] args) {
        URL resource = CalculatorSelf.class.getResource("IconImage.png");
        System.out.println(resource);
    }
答案是否定的,我们看到运行结构是null,说明没有读取成功

二、解决办法

1、先不传参数,执行一下方法
public static void main(String[] args) {
        URL resource = CalculatorSelf.class.getResource("");
        System.out.println(resource);
    }
运行结果如下:

我们发现这个路径是java类所在的目录路径,并且他读取的是target,那我们直接看一下target

2、再试一下传 /,执行一下方法
public static void main(String[] args) {
        URL resource = CalculatorSelf.class.getResource("/");
        System.out.println(resource);
    }
运行结果是这样的:

此时路径到了classes目录,而我们所需要的图片文件正好就在classes目录下,所以可以写成
public static void main(String[] args) {
        URL resource = CalculatorSelf.class.getResource("/IconImage.png");
        System.out.println(resource);
    }
这样就读到了图片文件

三、总结

上面说了这么多,可能有的同学终于被说蒙了,没事,最后我总结一下。

先找到根目录,直接这样写即可:class.getResource(“/”) ,然后打开编译出来的target目录,依次往里面找,每经过一个目录就加到 "/"后面,比如:将上面例子中的图片文件移到esmapper文件夹下面,那么此时
代码应该写成:

URL resource = CalculatorSelf.class.getResource("/esmapper/IconImage.png");
System.ou


相关文章
|
6天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
33 3
|
1天前
|
存储 前端开发 Java
Java实现文件分片上传
Java实现文件分片上传
6 0
|
2天前
|
人工智能 安全 Java
Java8 - LocalDateTime时间日期类使用详解
Java8 - LocalDateTime时间日期类使用详解
|
3天前
|
Java
Java 与垃圾回收有关的方法
Java 与垃圾回收有关的方法
|
3天前
|
安全 Java 程序员
|
3天前
|
存储 Java 测试技术
一文搞清楚Java中的方法、常量、变量、参数
在JVM的运转中,承载的是数据,而数据的一种变现形式就是“量”,量分为:**常量与变量**,我们在数学和物理学中已经接触过变量的概念了,在Java中的变量就是在程序运行过程中可以改变其值的量。
14 0
|
4天前
|
Java
Java Class类
Java Class类
8 0
|
8天前
|
存储 Java
Java动态转发代理IP的实现方法
Java动态转发代理IP的实现方法
23 11
|
9天前
|
Java
Java接口中可以定义哪些方法?
【4月更文挑战第13天】
14 0
Java接口中可以定义哪些方法?
|
10天前
|
Java 编译器
Java Character 类
4月更文挑战第13天