本人大四狗,主要是为了记录下参加企业培训学到的东西并且做个记录,表示自己学过这些
数据读取文件中数据需要的IO流
IO流主要分为输入和输出
输入输出又分为字节或者字符流
本次数据处理需要用到
1.FileInputStream:读取文件的流,字节输入流
2.InputStreamReader:是字节流与字符流之间的桥梁,能将字节流输出为字符流,并且能为字节流指定字符集,可输出一个个的字符
3.BufferedReader:字符输入流,提供通用的缓冲方式文本读取,readLine读取一个文本行, 从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。
4.FileOutputStream:输出流到文件中,字节输出流
5.DataOutputStream:数据输出流
读取第一步,了解为什么要使用这些流
1.从文件中读取数据如下图
代码如下
InputStreamReader file = new InputStreamReader( new FileInputStream("src/main/java/radwtmp1"));
BufferedReader bur = new BufferedReader(file);
解释我们读取这一些数据,需要一行一行的读取,BufferedReader中就有个方法readLine可以进行读取,而BufferedReader是字符输入流,.FileInputStream是字节流,我们需要流的转换,因此使用InputStreamReader进行流的转换
第二步:进行相应的处理
这里我是使用getset方法,将数据封装处理
long len = 0;
File files = new File
("src/main/java/record");
if(files.exists()){
try{
//上一次读取的字符数len文件存在
FileInputStream fisrecord = new FileInputStream(files);
DataInputStream dis = new DataInputStream(fisrecord);
len = dis.readLong();
dis.close();
fisrecord.close();
}catch (Exception e){
len=0;
}
}
bur.skip(len);
String msg=null;
while ((msg=bur.readLine())!=null){
len += msg.length()+1;
//封装数据
String[] split= msg.split("[|]");
Environment el=new Environment();
el.setSrcId(split[0]);
el.setDesId(split[1]);
el.setDevId(split[2]);
el.setSersorAddress(split[3]);
String sa = split[3];
el.setCount(Integer.parseInt(split[4]));
el.setCmd(split[5]);
el.setStatus(Integer.parseInt(split[7]));
el.setGather_date(new Timestamp(Long.parseLong(split[8])));
if (split.length!=9){
continue;
}
if("16".equals(sa)){
Environment el2=new Environment();
el2.setSrcId(split[0]);
el2.