我是用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(其实我在备考软考。。),说是要把这个实体类对象再发送到公司的一个平台上,相当于项目温度管理模块的一个小插件吧。发送平台的代码我就不放了,你们拿来也没用。
唉,底层劳动人民