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的文件

相关文章
|
3月前
|
数据采集 运维 供应链
数据资产是什么?一文讲清数据资产入表全流程!
2024年1月1日起,企业数据资源可有条件计入资产,标志着数据从资源迈向资产新阶段。本文详解数据资产入表的定义、常见误区及四大核心步骤,涵盖确权、价值证明、成本归集与后续管理,剖析其战略价值与现实挑战,助力企业实现数据资产合规入表,释放数据价值。
数据资产是什么?一文讲清数据资产入表全流程!
|
11月前
|
JSON Java Maven
SpringBoot整合gRPC踩坑回顾
本文回顾了作者在引入gRPC过程中遇到的挑战与解决方案。首先,由于SpringBoot 3.0暂不支持相关starter,导致初期预研不足,项目无法启动。接着,在编写代码时因对微服务架构理解不清,出现多个设计错误。最后,解决依赖冲突问题,特别是`protobuf-java-util`与现有依赖的冲突,通过Maven Helper插件有效排查并修复问题。此次经历加深了作者对微服务架构的理解,并为后续项目拆分打下基础。
540 2
|
12月前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
11377 5
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
人工智能 机器人
《央视》点赞瓴羊AI+数据人才培训,这个新职业火了
《央视》点赞瓴羊AI+数据人才培训,这个新职业火了
1352 0
|
缓存 监控 安全
Spring AOP 详细深入讲解+代码示例
Spring AOP(Aspect-Oriented Programming)是Spring框架提供的一种面向切面编程的技术。它通过将横切关注点(例如日志记录、事务管理、安全性检查等)从主业务逻辑代码中分离出来,以模块化的方式实现对这些关注点的管理和重用。 在Spring AOP中,切面(Aspect)是一个模块化的关注点,它可以跨越多个对象,例如日志记录、事务管理等。切面通过定义切点(Pointcut)和增强(Advice)来介入目标对象的方法执行过程。 切点是一个表达式,用于匹配目标对象的一组方法,在这些方法执行时切面会被触发。增强则定义了切面在目标对象方法执行前、执行后或抛出异常时所
17370 4
|
存储
在 Web 中判断页面是不是刷新
【9月更文挑战第10天】在Web开发中,判断页面是否刷新有多种方法:1) 监听`popstate`事件,检测用户是否通过历史记录访问页面;2) 记录并比较页面加载时间戳,若相差极小,则可能为刷新;3) 利用本地存储设置特定值,若该值不存在或不符合预期,则页面可能被刷新。然而,这些方法并非绝对准确。
605 3
|
安全 Java 测试技术
一文帮你搞定JDK8升级11
本文记录了作者从JDK8升级到11的实践过程和升级后的效果以及JDK11新玩法。
492 10
|
Android开发
Android Studio: 解决Gradle sync failed 错误
本文介绍了解决Android Studio中出现的Gradle同步失败错误的步骤,包括从`gradle-wrapper.properties`文件中获取Gradle的下载链接,手动下载Gradle压缩包,并替换默认下载路径中的临时文件,然后重新触发Android Studio的"Try Again"来完成同步。
7717 0
Android Studio: 解决Gradle sync failed 错误
|
图形学 开发工具 git
Unity与版本控制:游戏开发团队如何利用Git打造高效协作流程,实现代码管理的最佳实践指南
【8月更文挑战第31天】版本控制在软件开发中至关重要,尤其在Unity游戏开发中,能提升团队协作效率并避免错误。本文介绍如何在Unity项目中应用版本控制的最佳实践,包括选择Git、配置项目以排除不必要的文件、组织项目结构、避免冲突、规范提交信息以及使用分支管理开发流程,从而提高代码质量和团队协作效率。
1402 2
|
小程序
微信小程序APPID的两种查看方法
查看微信小程序APPID的两种方法:1) 在小程序内点击右上角“...”,进入查看页面,点击“更多资料”查看;2) 登录微信公众平台([https://mp.weixin.qq.com/](https://mp.weixin.qq.com/)),进入【设置】查看“账号信息”。
14268 1