设置定时器读取由TAB分隔的txt文件内容并存入实体类

我是用IDEA创建了一个简单项目。

先看下如何定时读取内容吧,这是代码:

package com.example.textdata;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;

@Configuration      //1.主要用于标记配置类,兼备Component的效果。
@EnableScheduling   // 2.开启定时任务
@EnableAsync        // 3.开启多线程  异步

public class DataTransmission {
    @Async//使用多线程
    @Scheduled(fixedDelay = 2000)//定时时间 fixedDelay设置上次任务结束后再继续计时执行
    public void dataTransmission() {
        String result=null ;
        File file = new File("D:/IDEA/IDEAWorkSpace/textdata/src/main/resources/static/text.txt");
        try{
            BufferedReader br = new BufferedReader(new FileReader(file));//构造一个BufferedReader类来读取文件
            result =br.readLine();
            br.close();
        }catch(Exception e){
            e.printStackTrace();
        }
        System.out.println(result);
    }
}

效果:

我这个文本只有一行,如果有多行的话,直接在这行做个判定是否为空即可。

result =br.readLine();

可以看到,我的文本里有四个字段,被三个TAB分隔,现在要做的就是用split函数,将这个字符串转成长度为4的(因为有四个字段啦。。)一个String数组。对于上面代码来说,有三处更改,我都注释掉了,并把新的代码附在对应下面,可以对照来看。

代码如下:

public class DataTransmission {
    @Async//使用多线程
    @Scheduled(fixedDelay = 2000)//定时时间 fixedDelay设置上次任务结束后再继续计时执行
    public void dataTransmission() {
//        String result=null ;
        String[] result=null ;
        File file = new File("D:/IDEA/IDEAWorkSpace/textdata/src/main/resources/static/text.txt");
        try{
            BufferedReader br = new BufferedReader(new FileReader(file));//构造一个BufferedReader类来读取文件
//            result =br.readLine();
            result =br.readLine().split("\\s+");
            br.close();
        }catch(Exception e){
            e.printStackTrace();
        }
//        System.out.println(result);
        for (String s : result) {
            System.out.println(s);
        }
    }
}

效果:

好,接下来就是创建一个实体类,来接收这四个字段。

temperature temperature = new temperature();
temperature.setType(result[0]);
temperature.setId(result[1]);
temperature.setTemperature(result[2]);
temperature.setIp(result[3]);
System.out.println(temperature);

记得要引用这个实体类才行。

看下效果:

到此为止功能就基本实现啦,然后就可以为所欲为了。

最近项目进入验收阶段,项目组长见我没事干,抓我来做这个demo(其实我在备考软考。。),说是要把这个实体类对象再发送到公司的一个平台上,相当于项目温度管理模块的一个小插件吧。发送平台的代码我就不放了,你们拿来也没用。

唉,底层劳动人民

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值