栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java代码实现读取文档中的数据

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java代码实现读取文档中的数据

1.首先实现一个Environment对象类:

提供对应的属性值,并提供无参和多参构造器.

代码如下:

public class Environment implements Serializable{
	private static final long serialVersionUID = 1L;
	
	//环境种类名称
	private String name;
	//发送端id
	private String srcId;
	//树莓派系统id
	private String desId;
	//实验箱区域模块id(1-8)
	private String devId;
	//模块上传感器地址
	private String sersorAddress;
	//传感器个数
	private int count;
	//发送指令标号 3表示接收数据 16表示发送命令
	private String cmd;
	//状态 默认1表示成功
	private int status;
	//环境值
	private float data;
	//采集时间
	private Timestamp gather_date;
	
	public Environment() {}
	
	public Environment(String name, String srcId, String desId, String devId,
			String sersorAddress, int count, String cmd, int status,
			float data, Timestamp gather_date) {
		this.name = name;
		this.srcId = srcId;
		this.desId = desId;
		this.devId = devId;
		this.sersorAddress = sersorAddress;
		this.count = count;
		this.cmd = cmd;
		this.status = status;
		this.data = data;
		this.gather_date = gather_date;
	}

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSrcId() {
		return srcId;
	}
	public void setSrcId(String srcId) {
		this.srcId = srcId;
	}
	public String getDesId() {
		return desId;
	}
	public void setDesId(String desId) {
		this.desId = desId;
	}
	public String getDevId() {
		return devId;
	}
	public void setDevId(String devId) {
		this.devId = devId;
	}
	public String getSersorAddress() {
		return sersorAddress;
	}
	public void setSersorAddress(String sersorAddress) {
		this.sersorAddress = sersorAddress;
	}
	public int getCount() {
		return count;
	}
	public void setCount(int count) {
		this.count = count;
	}
	public String getCmd() {
		return cmd;
	}
	public void setCmd(String cmd) {
		this.cmd = cmd;
	}
	public int getStatus() {
		return status;
	}
	public void setStatus(int status) {
		this.status = status;
	}
	public float getData() {
		return data;
	}
	public void setData(float data) {
		this.data = data;
	}
	public Timestamp getGather_date() {
		return gather_date;
	}
	public void setGather_date(Timestamp gather_date) {
		this.gather_date = gather_date;
	}
	@Override
	public String toString() {
		return "Environment [name=" + name + ", srcId=" + srcId + ", desId="
				+ desId + ", devId=" + devId + ", sersorAddress="
				+ sersorAddress + ", count=" + count + ", cmd=" + cmd
				+ ", status=" + status + ", data=" + data + ", gather_date="
				+ gather_date + "]";
	}
}
2.运用包装文件字符流逐行读取文件的内容:

问题1.当读取到温度的时候需要区分两个对象,其中我们需要运用反射的方法区调用第二个对象。

问题2.当读取到属性的时候需要将string类型的数字按照"|"进行分割

问题3.当读取到date和timestamp的时候需要将16进制的数据转化为十进制类型

timestamp类型的时间戳读取需要将long类型转化为date类型

代码如下:

public class Gatherimpl implements Gather {
	private String filePath = "file";

	@Override
	public Collection gather() {

		Collection list = new ArrayList<>();
//		1.读取文件 date-file-simple
//		2.读取每一行数据
//		3对数据进行分析
//		3.1 16 温度前四位
//		3.2 16湿度中间四位
//		3.3 256 光照强度
//		3.4 1280 co2浓度
//		100|101|2|16|1|3|5d606f7802|1|1516323596029

		BufferedReader br = null;
		try {
			br = new BufferedReader(new FileReader(filePath));
			String line = null;
			Environment env1=null;
			Environment env2=null;
			while ((line = br.readLine()) != null) {
				String[] str = line.split("[|]");
				if (str.length == 9) {
					env1=new Environment();
					env1.setSrcId(str[0]);					
					env1.setDesId(str[1]);
					env1.setDevId(str[2]);
					env1.setSersorAddress(str[3]);
					env1.setCount(Integer.parseInt(str[4]));
					env1.setCmd(str[5]);
					env1.setStatus(Integer.parseInt(str[7]));
					env1.setGather_date(new Timestamp(Long.valueOf(str[8])));
					
					switch (env1.getSersorAddress()) {
					case "16":
						  env2=copy(env1);
						  env1.setName("温度");
						  env1.setData((Integer.parseInt(str[6].substring(0, 4), 16) * (0.00268127F)) - 46.85F);
						  
						  env2.setName("湿度");
						  env2.setData((Integer.parseInt(str[6].substring(4, 8), 16) * 0.00190735F) - 6);
						  list.add(env2);
						break;
					case "256":
						 env1.setName("光照强度");
						 env1.setData(Integer.parseInt(str[6].substring(0, 4), 16));
					case "1280":
						 env1.setName("二氧化碳");
						 env1.setData(Integer.parseInt(str[6].substring(0, 4), 16));
					default:
						 System.out.println("数据的地址填写不符合类型"+env1.getSersorAddress()+"(16+256+1280)");
						break;
					}
				
				} else {
					System.out.println("传入数据有误");
				}
				list.add(env1);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(br!=null) {
				try {
					br.close();
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
		return list;
	}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/338157.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号