我的数据格式data.txt 如下:
1 00 [7E,00,11,23,7E] 5
2 22 [7E,22,11,23,34,45,7E] 7
3 24 [7E,24,11,23,34,45,34,45,7E] 9
........
第一个数据是包的编号1,2,3,4...
第二个是数据包的类型,为数据包的第一个数据
第三个为一个ArrayList<String>,内容为真实数据(头尾均一样)。
第四个为包的长度。另有一DTO类,对应。
class Packet{
   int id;
   String type;
   AyyayList<String> data;
   int length;
   //get set.....
}
请问如何读取数据并组装为对象。。

解决方案 »

  1.   

    每次读取一行,然后按照空格分隔解析即可:BufferedReader   in   =   new   BufferedReader(new   FileReader( "文件名.txt "));
    String   line   =   null;
    List<Packet> packetList = new ArrayList<Packet>();
    while((line= in.readLine())!=null)
     {
                System.out.println(line);
                String[] item =  line.split(" ");
                Packet packet = new Packet();
                paket.setId(item[0]);
                paket.setType(item[0]);
                -----
                packetList.add(packet);
    }
      

  2.   


    package T1;import java.io.BufferedReader;
    import java.io.FileReader;
    import java.util.ArrayList;
    import java.util.LinkedList;
    import java.util.List;public class T1 { private static List<D1> ds = new LinkedList<D1>();
    public static void main(String []args){
    String p = T1.class.getResource("d.txt").getFile();
    try {
    BufferedReader br = new BufferedReader(new FileReader(p));
    String line = null;
    do{
    line = br.readLine();
    proceLine(line);
    }while(line != null);
    br.close();

    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }

    private static void proceLine(String line) {
    if(line == null){
    return ;
    }
    D1 d = new D1();

    try{

    String[] ls = line.split(" ");

    d.setId(Integer.parseInt(ls[0]));
    d.setType(ls[1]);
    d.setLength(Integer.parseInt(ls[3]));

    ls[2] = ls[2].substring(1, ls[2].length()-1);//去掉[]

    ls = ls[2].split(",");
    ArrayList<String> al = new ArrayList<String>();
    for(int i = 0;i<ls.length;i++){
    al.add(ls[i]);
    }
    d.setData(al);

    }catch(Exception e){
    d = null;
    }
    if(d != null){

    ds.add(d);
    }
    }
    }
    package T1;import java.util.ArrayList;public class D1 { private int id;
    private String type;
    private ArrayList<String> data;
    private int length;
    public int getId() {
    return id;
    }
    public void setId(int id) {
    this.id = id;
    }
    public String getType() {
    return type;
    }
    public void setType(String type) {
    this.type = type;
    }
    public ArrayList<String> getData() {
    return data;
    }
    public void setData(ArrayList<String> data) {
    this.data = data;
    }
    public int getLength() {
    return length;
    }
    public void setLength(int length) {
    this.length = length;
    }

    }文本文件d.txt,1 00 [7E,00,11,23,7E] 5
    2 22 [7E,22,11,23,34,45,7E] 7
    3 24 [7E,24,11,23,34,45,34,45,7E] 9