Maven项目获取资源文件路径并读取资源文件内容

简介: Maven项目获取资源文件路径并读取资源文件内容

使用IDEA新建一个Maven项目

image.png

demo/
  src/
      main/
          java/
          resources/   # 资源路径
  target/
      classes/         # 编译后文件

resources文件夹下的文件在编译后,都放在了根目录classes之下

一、获取项目路径

package com.demo;
import java.net.URL;
public class App {
    public static void main(String[] args) {
        //项目根路径
        URL url1 = App.class.getClassLoader().getResource("");
        System.out.println(url1.getPath());
        // 项目根路径
        URL url2 = App.class.getResource("/");
        System.out.println(url2.getPath());
        // 文件根路径
        URL url3 = App.class.getResource("");
        System.out.println(url3.getPath());
    }
}

输出结果(省略/demo前的路径,只看后面的路径)

package com.demo;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
public class App {
    public static void main(String[] args) throws IOException {
        URL url = App.class.getResource("/name.txt");
        String filename = url.getPath();
        System.out.println(filename);
        // /demo/target/classes/name.txt
        BufferedReader reader = new BufferedReader(new FileReader(filename));
        String  line ;
        while ((line = reader.readLine())!= null){
            System.out.println(line);
        }
        reader.close();
    }
}
/demo/target/classes/
/demo/target/classes/
/demo/target/classes/com/demo/package com.demo;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
public class App {
    public static void main(String[] args) throws IOException {
        URL url = App.class.getResource("/name.txt");
        String filename = url.getPath();
        System.out.println(filename);
        // /demo/target/classes/name.txt
        BufferedReader reader = new BufferedReader(new FileReader(filename));
        String  line ;
        while ((line = reader.readLine())!= null){
            System.out.println(line);
        }
        reader.close();
    }
}

二、读取文件

/demo/src/main/resources/name.txt

Tom
Jack
Jobs

读取文件内容

package com.demo;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
public class App {
    public static void main(String[] args) throws IOException {
        URL url = App.class.getResource("/name.txt");
        String filename = url.getPath();
        System.out.println(filename);
        // /demo/target/classes/name.txt
        BufferedReader reader = new BufferedReader(new FileReader(filename));
        String  line ;
        while ((line = reader.readLine())!= null){
            System.out.println(line);
        }
        reader.close();
    }
}

输出结果

Tom
Jack
Jobs
• 1
• 2
• 3

参考

Maven获取resources的文件路径、读取resources的文件

相关文章
|
Java 应用服务中间件 数据库连接
面试官:SpringBoot如何优雅停机?
面试官:SpringBoot如何优雅停机?
621 0
|
安全 Linux 程序员
TLS加密远程连接Docker
学习Docker官方推荐的安全的远程连接方式:TLS加密连接
722 0
TLS加密远程连接Docker
|
2月前
|
数据采集 运维 供应链
数据资产是什么?一文讲清数据资产入表全流程!
2024年1月1日起,企业数据资源可有条件计入资产,标志着数据从资源迈向资产新阶段。本文详解数据资产入表的定义、常见误区及四大核心步骤,涵盖确权、价值证明、成本归集与后续管理,剖析其战略价值与现实挑战,助力企业实现数据资产合规入表,释放数据价值。
数据资产是什么?一文讲清数据资产入表全流程!
|
10月前
|
JSON Java Maven
SpringBoot整合gRPC踩坑回顾
本文回顾了作者在引入gRPC过程中遇到的挑战与解决方案。首先,由于SpringBoot 3.0暂不支持相关starter,导致初期预研不足,项目无法启动。接着,在编写代码时因对微服务架构理解不清,出现多个设计错误。最后,解决依赖冲突问题,特别是`protobuf-java-util`与现有依赖的冲突,通过Maven Helper插件有效排查并修复问题。此次经历加深了作者对微服务架构的理解,并为后续项目拆分打下基础。
488 2
|
人工智能 机器人
《央视》点赞瓴羊AI+数据人才培训,这个新职业火了
《央视》点赞瓴羊AI+数据人才培训,这个新职业火了
1288 0
|
存储 IDE Java
Java“ClassFormatError”解决
Java中的“ClassFormatError”是一个运行时异常,通常发生在类文件格式不正确或被篡改时。本文将介绍该错误的常见原因及解决方法,帮助开发者快速定位并解决问题。
549 2
|
缓存 监控 安全
Spring AOP 详细深入讲解+代码示例
Spring AOP(Aspect-Oriented Programming)是Spring框架提供的一种面向切面编程的技术。它通过将横切关注点(例如日志记录、事务管理、安全性检查等)从主业务逻辑代码中分离出来,以模块化的方式实现对这些关注点的管理和重用。 在Spring AOP中,切面(Aspect)是一个模块化的关注点,它可以跨越多个对象,例如日志记录、事务管理等。切面通过定义切点(Pointcut)和增强(Advice)来介入目标对象的方法执行过程。 切点是一个表达式,用于匹配目标对象的一组方法,在这些方法执行时切面会被触发。增强则定义了切面在目标对象方法执行前、执行后或抛出异常时所
17146 4
|
存储
在 Web 中判断页面是不是刷新
【9月更文挑战第10天】在Web开发中,判断页面是否刷新有多种方法:1) 监听`popstate`事件,检测用户是否通过历史记录访问页面;2) 记录并比较页面加载时间戳,若相差极小,则可能为刷新;3) 利用本地存储设置特定值,若该值不存在或不符合预期,则页面可能被刷新。然而,这些方法并非绝对准确。
585 3
|
安全 Java 测试技术
一文帮你搞定JDK8升级11
本文记录了作者从JDK8升级到11的实践过程和升级后的效果以及JDK11新玩法。
427 10