java读取文件

news2024/11/20 18:30:54

先看项目截图
在这里插入图片描述

public  class FileTest {
    public static void main(String[]args) throws IOException {
        String path = Objects.requireNonNull(FileTest.class.getClassLoader().getResource("")).getPath();
        System.out.println(path);
        System.out.println("***********");
        String result = FileUtils.readFileToString(new File(path+"config/First.xml"), StandardCharsets.UTF_8);
        System.out.println(result);
    }
}

文件放在resources目录下,用上面的方式就能读。

那如果文件放到src目录下呢?
比较麻烦
为什么?因为我们知道java的运行是把后缀名为java的文件进行编译,编译成.class文件, 然后统一放到/Users/dongleifeng/IdeaProjects/parent_pro/spring_boot/target/classes/ 下面这个位置
在这里插入图片描述

我们可以看到target下有两个文件夹一个classes和一个test-classes
如上图所示,我用的ide是idea,idea默认只把
src/main/java 下的后缀名为.java的文件进行了编译,复制到classes文件夹
src/main/resources 下的所有配置文件复制到classes文件夹
还有test下面的对应文件复制到test-classes
加入你把配置文件放到src下面,最终咱们的业务逻辑是在classes文件夹里开始的,那自然就没法感知到原来的src/main/java下面的配置文件了。

怎么办,既然知道了为什么访问不到文件,那想办法让idea把src下面的非java文件也复制到target/classes下面不就OK了?

解决方案见:
https://blog.csdn.net/shifangwannian/article/details/48882201

但是我觉得不好,最好的方式依然是把配置文件放到resources目录下
人家规范都定好了
src下面是源文件
resources下是配置文件
为啥要打破这个规则呢?

另外再附一个读取properties文件的方式
【Java】读取/加载 properties配置文件的几种方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/29045.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信“史诗级”更新,小而美终于回来啦~

最近微信安卓版又有了更新,版本号也来到了8.0.30。 此次更新又被业界称之为“史诗级”更新,主要原因是新版本微信安装包体积缩小了10M。 没错,你没有看错微信的安装包真的缩小了,而且整整缩小了10M! 天呐&#xff0…

MyBatis从入门到精通真没那么难!跟着我带你深入实践Mybatis技术原理与实战!

什么是Mybatis mybatis 是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。 mybatis通过xml或注解的方式将要执行的各种 statemen…

跨平台应用开发进阶(四十五)uni-app集成企微客服实战

文章目录一、前言二、功能实现2.1 环境准备2.2 代码层面2.3 拓展工具三、拓展阅读一、前言 应用运营过程中,考虑接入企业微信客服功能,大致看了下官方接入文档,并不困难,引入代码量也不大。按照手册来操作即可。 二、功能实现 …

Go Module的基本使用

go module是类似于java中的maven,是包的管理工具,在没有这个go module之前,都是配置本地的GOPATH,创建的每个项目也都必须创建在这个GOPATH的src目录下,且项目的go文件不能重名 go module是在go1.1.1版本推出的 开启go module 在…

装配式施工在建筑装修中的应用研究

目 录 摘 要 I Abstract II 1引言 1 2装配式施工在建筑装修中的发展背景及现状 2 2.1装配式施工在建筑装修中的发展背景 2 2.2建筑装饰行业现状 2 3装配式施工在建筑装修中体系的主要特点 3 4装配式施工在建筑装修中体系的构成 4 4.1八大系统 4 4.1.1集成卫浴系统 4 4.1.2集成厨…

【App自动化测试】(二)Appium环境部署

目录1. Appium生态工具2. Appium环境安装部署2.1 Appium 环境依赖说明2.2 第一步:安装JDK2.3 第二步:安装SDK2.4 第三步:安装Appium2.5 第四步:安装appium python client2.6 第五步:安装appium-doctor检测appium的安装…

Metabase学习教程:视图-1

你应该用哪个图表? 您应该使用哪种类型的图表和图表来最好地传达来自数据的见解?这将有助于你选择正确的工作。 选择正确的图表可以归结为两个问题:数据是什么样子的,以及您试图传达什么? 让Metabase为您选择图表 …

Day01-网页结构分析

网页结构分析 一 前言 姓名:陈云 TEL:18571593511 企业用人的两个标准 1.能干活,见到需求能反应出粗线条实施计划,起手实施后能自主预判和解决坑点,直至完成. 2.对某些敏感点理解较准确,有一定潜质做个性化封装和技术选型工作,应对突发状况,避免生…

SpringBoot--通过JSON传递请求参数--方法/实例

原文网址:SpringBoot--通过JSON传递请求参数--方法/实例_IT利刃出鞘的博客-CSDN博客 简介 本文用示例介绍SpringMVC如何通过JSON格式传递入参。 JSON格式使用post方式来请求,即:对应的注解为:PostMapping。 PostMapping注解的方法…

Vue学习笔记

课程来源:https://www.bilibili.com/video/BV1Zy4y1K7SH?p4&vd_source6f37192b213c98639a87ec77b26d105d 学习计划:一天学10节,从第四节开始做笔记,预计16天完成(完成日期2022年12月7日) 目录&#…

【1】Anaconda基本命令以及相关工具:jupyter、numpy、Matplotilb

目录 一、Anaconda ◼ anaconda命令行操作 二、jupyter notebook 1 jupyter的基础使用 ◼ jupyter的启动 ◼ ipynb文件的新建、重命名、删除 ◼ 菜单说明 ◼ 运行cell单元块 ◼ 编写文档笔记 2 jupyter的高级使用:常用魔法命令 ◼ writefile pycat run …

【Golang】来用GoLand开发第一个Go程序

​ 📓推荐网站(不断完善中):个人博客 ​ 📌个人主页:个人主页 ​ 👉相关专栏:CSDN专栏、个人专栏 ​ 🏝立志赚钱,干活想躺,瞎分享的摸鱼工程师一枚 文章目录&#x1f34a…

【JAVA程序设计】基于JAVA的坦克大战小游戏--入门级小游戏

基于JAVA的坦克大战小游戏--入门级小游戏零、项目获取一、项目简介二、开发环境三、游戏玩法四、运行截图零、项目获取 获取方式(点击下载):是云猿实战 项目经过多人测试运行,可以确保100%成功运行。 一、项目简介 本项目是基于…

基于Java+Spring+Strusts2+Hibernate 社区智慧养老服务平台 系统设计与实现

一.项目介绍 本系统分为前端 和 后端 两块, 前端包括:首页、健康新闻、疾病预防、养生之道、动态通知、登录和注册 各模块的文章点击查看,支持评论以及回复功能, 登录成功之后点击欢迎您:后面的账号即可进入后台管理 后端包括&…

老杨说运维 | 非常重要,事关转型

《荀子》有云:“水能载舟,亦能覆舟。”在公司日常运营过程中,数据指标就像是水,孕育着生命,承载着万物。科学的数据指标能指引公司在正确的道路上不断前进,使平淡无常的业务焕发新生,而不合理的…

Qt QUndoStack、QUndoCommand(实现撤回和回撤)

用到的类: 1 QUndoStack: 一个存放 QUndoCommand 命令的栈. 2 QUndoCommand:The QUndoCommand class is the base class of all commands stored on a QUndoStack. 3 QUndoView:The QUndoView class displays the contents of a QUndoStack.&…

C#上位机系列(3)—定时器和串口的介绍

本文是讲解C#.net平台的Winform框架下的第三个内容,手把手介绍上位机项目的创建方式以及一些写软件时常用的功能,讲解从零开始的每一个步骤。 本次介绍上位机中定时器的使用和串口的配置 定时器:每过一段设定好的时间进入执行函数&#xff…

SIMULIA现实仿真解决方案 SIMULIA仿真模拟应用程序

由 3DEXPERIENCE 平台提供技术支持,SIMULIA 可提供仿真模拟应用程序,这些应用程序使用户能够探究现实生活中产品、自然和生命的行为 SIMULIA 通过虚拟测试实现性能要求促进协作。其产品组合提供强大的工具,能够对采用V6设计的零件、组件和产…

敏捷开发失败的五个原因以及解决方案

作者:David Bevans , Mendix公司高级内容营销经理 敏捷开发是一个可以改变软件交付方式的框架且效果十分惊人,但鉴于需要反复不断规划、测试、集成以及其他进行中的开发方式,敏捷开发在某些情况下行不通。下文将对常见的敏捷开发失灵以及相应…

菁染料CY3/CY5/CY7标记链霉亲和素/胰岛素,CY3/CY5/CY7-Streptavidin/Insulin

产品名称:菁染料CY3/CY5/CY7标记链霉亲和素/胰岛素 英文名称:CY3/CY5/CY7-Streptavidin/Insulin 链霉亲和素(streptavidin下称SA)是与亲和素(avidin下称AV)有相似生物学特性的一种蛋白质,是streptomyces avidinii菌的分泌物,其分…