java的io流介绍和从resources目录下读取文件案例代码

springboot项目读取 resources 目录下的文件的9种方式 案例: 模拟springboot 装配bean。 阅读详情

案例:
在开发的过程中需要补充一下数据到r2m中,所以需要从resources的根目录下读取txt文件,写了以下代码,具体逻辑如下:

1、用定时任务来执行代码,不掺入到主业务代码中:

    /*@Scheduled(cron = "0/30 * * * * ?")*/
    public void syncNewConsumeMqData(){
        //1、判断是否执行定时任务做插入操作
        String infoKey = r2mEntity.getClient().get(idInfoKeyConsume);
        log.info("MQ配置文件同步数据infoKey:{}", infoKey);
        if (StringUtils.isBlank(infoKey)) {
            log.info("结束");
            return;
        }
        //2、从配置文件中获取插入内容
        List<RecommondConfigToMqVO> insertData = getFileMessage();
        log.info("新消费获取配置文件数据条数:"+insertData.size());
        //3、将数据存储到r2m中
        if(CollectionUtils.isNotEmpty(insertData)){
            int i = 0;
            for(int s=0;s<insertData.size();s++){
                RecommondConfigToMqVO message = insertData.get(s);
                String json = new Gson().toJson(message);
                String key = NewConsumerMqListener.NEW_CONSUME+message.getBizCode()+message.getExtBizId()+message.getExtSubBizId();
                r2mEntity.getClient().set(key,json);
                log.info(String.format("插入数据编号:%s,插入数据key:%s,插入数据:%s", i, key,json));
                i++;
            }
            if(i==insertData.size()){
                log.info(String.format("新消费文本文件插入缓存成功:共计-》%s",i));
            }else{
                log.info(String.format("新消费文本文件插入缓存数据不一致:获取到的数据-》%s,插入成功的数据-》%s",insertData.size(),i));
            }
        }
        //4、删除插入标识key
        r2mEntity.getClient().del(idInfoKeyConsume);
        log.info("新消费插入r2m操作标识符删除成功!");
        log.info(JSON.toJSONString(insertData));
    }

2、通过java的IO的字符流读取文件,并通过缓冲流提升读的速度

/**
     * 从resource目录下获取表格数据
     * @return
     */
    private List<RecommondConfigToMqVO> getFileMessage(){
        List<RecommondConfigToMqVO> insertData = new ArrayList<>();
        InputStreamReader isr = null;
        BufferedReader br = null;
        try {
            InputStream in = this.getClass().getResourceAsStream("/mix.txt");
            isr = new InputStreamReader(in);
            br = new BufferedReader(isr);
            String str = "";
            while ((str = br.readLine()) != null) {
                insertData.add(this.assembleData(str));
            }
        } catch (FileNotFoundException e) {
            log.info("找不到指定文件");
        } catch (IOException e) {
            log.info("读取文件失败");
        } finally {
            try {
                br.close();
                isr.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return insertData;
        }
    }

3、将获取到的数据进行拆分然后封装到实体类中

 /**
     * 输入某一行数据,根据对应关系进行拆分
     * 可拆分数据格式  --》4	A241024138932592640	389	"101:100,103:0"
     * @param str
     * @return RecommondConfigToMqVO
     */
    private RecommondConfigToMqVO assembleData(String str){
        RecommondConfigToMqVO vo = null;
        if(StringUtils.isNotBlank(str)){
            vo = new RecommondConfigToMqVO();
            String[] s = str.split("\t");
            vo.setStatus(1);
            vo.setBizCode(s[1]);
            vo.setExtBizId(s[2]);
            vo.setExtSubBizId(s[3]);
            String replace = s[4].replace("\"", "");
            String[] configTypeVO = replace.split(",");
            List<ConfigTypeVo> configList = new ArrayList<>();
            for(int i=0;i<configTypeVO.length;i++){
                ConfigTypeVo configType = new ConfigTypeVo();
                String[] typeWeight = configTypeVO[i].split(":");
                configType.setType(Integer.valueOf(typeWeight[0]));
                configType.setWight(Integer.valueOf(typeWeight[1]));
                configList.add(configType);
            }
            vo.setConfigTypeVOList(configList);
        }
        return vo;
    }

以下是参考链接:
https://www.jb51.net/article/102935.htm缓冲流
https://blog.youkuaiyun.com/nightcurtis/article/details/51324105java的IO流
https://blog.youkuaiyun.com/Diamond_Tao/article/details/80010225 Java工程中读取resources目录下properties文件的几种方法(因为要在tomcat上部署,本案例用的是第二种)
https://www.runoob.com/java/java-files-io.html 菜鸟教程

Java项目读取maven项目的resources目录下的资源配置文件 文件格式 该文件在resources目录下,是项目所需的配置项 格式为:键名=值,当然这里=只是为了提高可读性,替换成别的符号也可以! 读取的代码 对文件的处理方式是将该文件的配置键名和值读取出来放入map集合中,然后通过map.get(key)获取值 import org.apache.commons.io.FileUtils; import org.apache.commons.lang.S... 阅读详情

相关推荐

java读取项目中的文件(src目录下)

NULL 博文链接:https://citywu123.iteye.com/blog/731180

java-读取resources下的文件

java-读取resource下的文件

sanhao_的博客 2298

浅谈Java工程读取resources中资源文件路径的问题

下面小编就为大家带来一篇浅谈Java工程读取resources中资源文件路径的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

java获取resource下的文件路径

String path = xxx.class.getClassLoader().getResource("targetFile.txt").getPath(); #java获取文件目录 ├── pom.xml ├── src │ ├── main │ │ ├── java │ │ │ ├── com │ │ │ │ ├── alipay │ │ ...

Captain249的博客 3万+

【MFiX后处理】MFiX中使用des_usr_var输出颗粒的传热量(2020-11-27更新变更输出变量名方法)

参考之前Yin的那一篇博客 https://www.cnblogs.com/Jay-CFD/p/10621274.html 输出一下颗粒传热量 使用的算例是fluid_bed_dem_2d 打开des scalar tracking 前面都和Yin那篇一样,打开enable user scalar tracking 输入2 因为第一个用来测试Y加速度了 第二个输出传热量 然后在output vtk中勾选好 更改源代码 源代码为des_thermo_newvalues.f 在mfix-GUI自带的ed

beidou111的博客 1532

【AutoDL + Langchain-Chatchat】从零构建高效本地 RAG 知识库问答系统:实战保姆级教程(含避坑指南)

本文详细阐述如何在AutoDL云平台,如何利用Langchain-Chatchat构建高效的本地RAG知识库问答系统,并深入解析RAG架构。从环境搭建到实战部署,从问题排查到性能优化,提供一份全面实用的指南,助力开发者快速构建智能问答应用。

拾光夕拾的博客 1803

Java项目读取resources资源文件路径那点事

看过很多的关于取路径的文章讲解,有类加载器方式,有包相对路径,这篇文章不错,有项目方式启动找路径,有打包以后获取路径,分别也做了讲解。   今天在Java程序中读取resources资源下的文件,由于对Java结构了解不透彻,遇到很多坑。正常在Java工程中读取某路径下的文件时,可以采用绝对路径和相对路径,绝对路径没什么好说的,相对路径,即相对于当前类的路径。在本地工程和服务器中读取文件的方式有所不同,以下图配置文件为例:   (1)本地读取资源文件   Java类中需要读取propert

老秦的博客 6975

ubuntu安装hodoop详细步骤

进入到Ubuntu系统中打开桌面,点击鼠标右键打开终端,在终端中输入如下命令这样就可以创建一名为hadoop的新用户。给用户输设置密码输入,输入如下命令,设置密码,按提示输入两次然后为hadoop用户增加管理员全新,这样就可以方便部署完成之后输入重启命令,重启一下Ubuntu系统,然后登录到我们创建的hadoop用户上面reboot。

2301_77603488的博客 9198

java语言——IO流 在控制台录入一个文件的路径,将文件拷贝到当前项目下

要求:在控制台录入一个文件的路径,将文件拷贝到当前项目下。 package com.io; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFound...

Mr_Ycy的博客 2430

零基础也能搞定!华为USG6000V防火墙WEB管理界面开启教程

本文详细介绍了华为USG6000V防火墙WEB管理界面的开启教程,从环境准备、网络配置到防火墙初始化,逐步指导用户完成图形化管理界面的搭建。特别适合零基础用户快速掌握企业级防火墙的可视化操作,提升安全管理效率。

grape的博客 786

大数据分析案例-基于随机森林算法构建二手房价格预测模型

通过应用随机森林算法,我们希望建立一个能够有效预测二手房价格的模型。这个模型可以基于各种因素,如区域位置、房屋属性、市场供需等,来预测未来某一时间点的房价。通过提高预测准确性,我们可以更好地把握房地产市场动态,为决策提供更有价值的参考。揭示影响二手房价格的因素及其影响方式:通过分析随机森林算法生成的模型,我们可以进一步了解哪些因素对二手房价格有重要影响,以及这些因素如何影响房价。这有助于我们深入理解房地产市场的运行规律,为制定更为有效的市场策略提供依据。

m0_64336780的博客 1万+

【JAVA IO流】

目录IO导学File类File对象判断文件是否存在File对象创建目录或文件File对象创建文件File对象创建目录File对象删除目录和文件删除目录删除文件File对象程序运行结束之后删除目录和文件File对象判断resources中的是目录还是文件如:路径是src/main/resources/资料如:路径是src/main/resources/笔记.txtFile对象遍历输出目录名和文件名File对象遍历输出目录名和文件名File对象lambda表达式遍历输出目录名和文件名File对象StreamAP

Rita_zf的博客 503

倍福PLC--PERSISTENT断电保持数据和BOOT中各文件对应的解析

将D:\TC3程序\TwinCAT Project146\TwinCAT RT(x86)\Plc 文件夹的中三个替换文件复制到:G:\TwinCAT\3.1\Boot\Plc完成替换,如下图。(2) 找到程序所存的路径,编程电脑的D:\TC3程序\TwinCAT Project146路径下,并选择对应系统平台TwinCAT RT(x86)(3) 控制器断电,拔出内存卡,使用读卡器,在编程电脑中打开:(本次测试读卡器为G盘)(5) 开机完成后,TwinCAT自动运行,当前闪灯频率为50ms。

weixin_41883890的博客 2339

SpringBoot读取resources目录下的文件

一、背景 Springboot项目中需要读取resources目录的文件,有些方法只能在开发环境下使用,项目发布到Linux等服务器上便无法读取到文件,需要使用通用方法进行文件的读取。 二、实现代码 package com.fuck.study.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.Resource; import org.spri

qq_36313856的博客 2064

【DRAM存储器十五】DDR介绍-关键技术之DLL和prefetch

详述DDR DLL和预取原理以及几个DDR相对初代SDRAM新增的时序参数

highman110的博客 4362

微信小程序 - {“errMsg”:”requestPayment:fail banned”} 微信小程序调用wx.requestPayment支付失败返回错误(uniapp微信小程序微信支付报错)

{“errMsg”:”requestPayment:fail banned”},微信小程序调用wx.requestPayment报错requestPayment:fail banned,uni-app微信小程序wx.requestPayment支付报错requestPayment:fail banned,拉起小程序支付报错,iPhone苹果ios真机微信支付报错,Android安卓手机微信支付报错,支付报错,商户配置,签名验证,uniapp 小程序支付微信支付一场,设置过b2b类目,确认了商户号相关功能正常

🏆 前端领域优质创作者 3337

Java项目读取resources下的配置文件

java项目 https://blog.youkuaiyun.com/C_envelope/article/details/82942836 Spring项目 https://www.cnblogs.com/haorui/p/9177993.html 参考 java读取resources下的配置文件+文件相对路径小结 读取spring工程中resource的文件 ...

小半的博客 8048

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

在Java代码中如何正确地读取文件(工作目录的概念、文件是否在resources目录下、为什么resources目录被称为类路径、在jar包中使用File类时会将哪个目录作为工作目录)

在Java代码中如何正确地读取文件(工作目录的概念、文件是否在resources目录下、为什么resources目录被称为类路径、在jar包中使用File类时会将哪个目录作为工作目录)

聂可以的博客 1003

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

java读取在resources目录下的文件内容

/注意:要先编译,这样在与src并列的target目录的子目录classes下才有这个projectData.json文件。//在resources目录下有projectData.json文件,读取方式如下,//在代码工程src子目录main目录下,有java和resources两个目录,//处理具体业务逻辑。

bestwinner的专栏 1026

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Spring项目的resources目录下的文件读取

src/main/resources和src/test/resources下的资源读取方式 1. 一般maven会将spring工程编译到target文件夹下,/target/classes就是其根目录。而src/main/resources下的文件被复制到了这个classes文件夹下。 2. maven会将src/test/java文件夹下的代码编译到target/test-classes文件夹下。同样的,如果src/test/resources下有资源文件的话,就复制到target/test-class

new_ord的博客 4516

Java IO流全解析:从FileInputStream到FileOutputStream与try-with-resources实战

本文深入解析Java中IO流的核心概念与分类,详细剖析FileInputStream与FileOutputStream的常用方法及文件操作技巧,涵盖字节流、字符流及try-with-resources自动资源管理,助你掌握高效文件读写与资源管理策略。

m0_73941339的博客 1254

Java 读取resources下的文件

读取resources下的资源文件 文件如图: 工具包 <!-- commons-io io的工具包 --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6</version> </dependency> <!--juni

suqinyi的博客 3万+

linux系统,springboot项目读取resources目录下的文件

昨天上线一个小功能,读取resources目录下一个xlsx文件,识别其中数据并存库。 发现用别的方法都是macbook上能读取到文件,上到linux环境就读取不到了。最后用了下面这种方法能正常读取到文件,特此记录一下。 项目结构如下: /** * 读取excel。 filePath为resources目录下的相对路径,如:category.xlsx */ ...

qq_38524629的博客 6724
上一篇: UUID和MD5加盐生成token令牌
下一篇: ES+Kibana平台搭建和javaApi连接
程序猿-日记本
博客等级 码龄10年 204粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值