zoukankan      html  css  js  c++  java
  • Java从Txt文本进行数据提取

    思路:

    按行读取数据,将有用的行提取出来,然后从行里提取有用得数据保存在数组中。

    readLine()方法是由BufferedReader类提供的阻塞式方法,当没有数据读取时,就一直会阻塞在那,而不是返回null;
    如果不指定buffer大小,则readLine()使用的buffer有8192个字符。在达到buffer大小之前,只有遇到”/r”、”/n”、”/r/n”才会返回

    package readText;
    
    import java.util.List;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    import java.util.LinkedList;
    public class Compare {
        private String date;
        private String missionid;
        private String com;
        private String rfid1;
        private String rfid2;
           
        List<Compare> a=new LinkedList<Compare>();
        public Compare(String date,String missionid,String com,String rfid1,String rfid2){
            this.date=date;
            this.missionid=missionid;
            this.com=com;
            this.rfid1=rfid1;
            this.rfid2=rfid2;        
        }
        
        public Compare(){}
        public void setGh(String date){
            this.date=date;
        }
        public String getDate(){
            return this.date;
        }
        public void setShift(String missionid){
            this.missionid=missionid;
        }
        public String getMissionid(){
            return this.missionid;
        }
        public void setCom(String com){
            this.com=com;
        }
        public String getCom(){
            return this.com;
        }
        public void setRfid1(String rfid1){
            this.rfid1=rfid1;
        }
        public String getRfid1(){
            return this.rfid1;
        }
        public void setRfid2(String rfid2){
            this.rfid2=rfid2;
        }
        public String getRfid2(){
            return this.rfid2;
        }
    }
    package readText;
    
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.BufferedWriter;
    import java.io.FileWriter;
    import java.io.IOException;
    
    import java.util.ArrayList;
    
    import java.util.List;
    import java.util.LinkedList;
    import readText.Compare;
    
    public class ReadData {
         public static void main(String[] args) throws IOException {
                try{
                    String dir="Log_2020-12-06_000";
                    BufferedReader in = new BufferedReader(new FileReader("C:\机器人Log\05\"+dir+".txt"));//打开文件创建数据流
                    BufferedWriter out = new BufferedWriter(new FileWriter("C:\机器人Log\05\"+dir+"_out.txt"));
                    BufferedWriter out_rfid = new BufferedWriter(new FileWriter("C:\机器人Log\05\"+dir+"_out_RFID.txt"));
                    String str; //定义String变量用来保存每一次读到的每一行的数据
                    int i=0;//行数
                    int j=0;//RFID个数
                    int temp=0;
                    
                    String Date="";
                    String Missionid="";
                    String com="";
                    String rfid1="";
                    String rfid2="";
                    
                    ArrayList<String> arraylist =new ArrayList<String>();
                    List<Compare> ls=new LinkedList<Compare>();
                    /*对下面的数据进行筛选*/
                    while((str=in.readLine())!=null){
                        if(str.contains("MissionID")&&str.contains("Command")&&str.contains("RFID")){//筛选条件
                            if(str.length()>0){
                               arraylist.add(str);                                                     
                               if(str.contains("PSwapD")){
                                   j=j+2;
                                   Date=str.substring(0, 19);
                                   Missionid=str.substring(43, 58);
                                   com="PSwapD";
                                   rfid1=str.substring(112, 120);
                                   rfid2=str.substring(145, 154);
                                   //System.out.println(Date+Missionid+com+rfid1+rfid2);
                                   
                                   Compare compare=new Compare(Date,Missionid,com,rfid1,rfid2);
                                   //System.out.println(compare.getDate());
                                   ls.add(compare);                                                             
                               }else{
                                   temp=temp+1;
                                   j=j+1;                               
                                   if(str.contains("PD")){                                   
                                       Date=str.substring(0, 19);
                                       Missionid=str.substring(43, 58);
                                       com="PD";
                                       rfid1=str.substring(120, 128);
                                       rfid2="";
                                       //System.out.println(Date+Missionid+com+rfid1+rfid2);                                   
                                       Compare compare=new Compare(Date,Missionid,com,rfid1,rfid2);
                                       //System.out.println(compare.getDate());
                                       ls.add(compare);                                                                      
                                   }
                                   if(str.contains("Pickup")){                                   
                                       Date=str.substring(0, 19);
                                       Missionid=str.substring(43, 58);
                                       com="Pickup";
                                       rfid1=str.substring(113, 122);
                                       rfid2="";
                                       //System.out.println(Date+Missionid+com+rfid1+rfid2);
                                       
                                       Compare compare=new Compare(Date,Missionid,com,rfid1,rfid2);
                                       //System.out.println(compare.getDate());
                                       ls.add(compare);
                                       
                                   }if(str.contains("Dropoff")){                                   
                                       Date=str.substring(0, 19);
                                       Missionid=str.substring(43, 58);
                                       com="Dropoff";
                                       rfid1=str.substring(112, 120);
                                       rfid2="";
                                       //System.out.println(Date+Missionid+com+rfid1+rfid2);
                                       
                                       Compare compare=new Compare(Date,Missionid,com,rfid1,rfid2);
                                       //System.out.println(compare.getDate());
                                       ls.add(compare);
                                       
                                   }
                               }
                               
                               i=i+1; 
                            }
                        }
                    }
                    in.close();
                    for (String s: arraylist){
                        out.write(s);
                        out.newLine();
                        out.flush();
                        
                    }
                    System.out.println(ls.size());
                    for(int z=0;z<ls.size();z++){
                        String rfid=ls.get(z).getDate()+" "+ls.get(z).getMissionid()+" "+ls.get(z).getCom()+" "+ls.get(z).getRfid1()+" "+ls.get(z).getRfid2();
                        System.out.println(rfid);
                        
                        out_rfid.write(rfid);
                        out_rfid.newLine();
                        out_rfid.flush();
                   }
                    out.write("输出完毕,共"+i+"行,"+j+"RFID");
                    out.close();
                    out_rfid.close();
                    System.out.println("输出完毕,共"+i+"行");
                    System.out.println("输出完毕,共"+j+"个RFID");
                    System.out.println("输出完毕,共"+temp+"个RFID");
                    } catch (IOException e) { 
                } 
            }
    
    }
  • 相关阅读:
    shell脚本
    Dockerfile
    【剑灵攻略】003、XXXfragment that is not a fragment错误,fragment认不出来
    【剑灵攻略】002、android工程引用方式
    【剑灵攻略】001、底部菜单栏实现
    ViewPager动画切换
    android raw与assets区别
    android+eclipse+maven环境搭建
    解决在IE8中无法使用原生JSON的问题
    Windows Phone Toast通知
  • 原文地址:https://www.cnblogs.com/bellin124/p/14102975.html
Copyright © 2011-2022 走看看