解析固定格式txt文件插入数据库

来源:互联网 发布:机柜网络模块 编辑:程序博客网 时间:2024/04/29 02:51

朝阳区
车龙汽车装饰(望京店)
南湖西园502号院中广宜景湾底商
4000052365
null
8:30-18:30
39.904214, 116.40741300000002

昌平区
京杰汽车服务
文华路龙锦苑四区2号楼底商
010-81746257
null
尚无营业时间
40.0822929, 116.34415969999998

丰台区
贝贝鱼汽车座套
公益西桥城南大道2座801室
18600019317
null
8:00—18:00
39.835887, 116.37078099999996

丰台区
金诚都汽车用品商行(草桥店)
草桥汇丰汽配城5排13号
010-51751365
null
尚无营业时间
39.904214, 116.40741300000002

大兴区
龙百特汽车用品
黄鹅路3号
010-52837324
null
早8:30—晚4:30
39.7524077, 116.28156289999992

海淀区
琪朗汽车美容中心(清河店)
清河小营环岛西北侧通厦汽配城1楼109号
010-60605109
null
8:30——18:00
40.0287122, 116.36658820000002

------------------------------------------------------------------------------------------------------------

小部分固定txt文件

 

 

代码实现思路 

1.逐行读取txt文件加入到list集合

2.循环list集合 把数据封装到bean类中

3.由于信息有7行第8行是空格  bean定义8个属性  循环给BEAN类赋值  

4.把赋值后的对象加入list集合中  把属性list清空 变量赋值 continue重新赋值

5.返回对象集合

 

public List<ShopInfo> readFile(String file){//String file 为文件路径
    List list=new ArrayList();//保存每组信息的list集合
    List<ShopInfo> shopList=new ArrayList<ShopInfo>();//保存shopinfo对象的集合
    ShopInfo shop =null;
    int count=1;//定义循环的变量
    String line;
    File f = new File(file);  
    try {
     FileReader fr = new FileReader(f);
     BufferedReader br = new BufferedReader(fr);
     //逐行读取
     while((line = br.readLine())!=null){
      list.add(line);
      count++;
      if(count%9==0){
       //循环创建对象并赋值
       shop=new ShopInfo();
       shop.setDistrict((String)list.get(0));
       shop.setName((String)list.get(1));
       shop.setAddress((String)list.get(2));
       shop.setPhone((String)list.get(3));
       shop.setTel((String)list.get(4));
       shop.setOpenTime((String)list.get(5));
       shop.setShopInMap((String)list.get(6));
       /*shop.setEmpty((String)list.get(7));*/
       shopList.add(shop);
       list=new ArrayList();
       count=1;
       continue;
      }
     }
     } catch (FileNotFoundException e1) {
     e1.printStackTrace();
     } catch (IOException e) {
     e.printStackTrace();
     }
     return shopList;
  }

 

6.返回对象集合后遍历集合 循环中取各个属性 编写sql语句 把属性插入的sql语句中 调用操作数据库底层代码完成循环插入

@Override
 public void doSave(String fileName) {
  // TODO Auto-generated method stub
  FileReaderDao readerDao=new FileReaderDaoImpl();
  List<ShopInfo>list=readerDao.readFile(fileName);
  for(int i=0;i<list.size();i++){
   String str=list.get(i).getAddress();
   String district=list.get(i).getDistrict();
     String Name=list.get(i).getName();
     String Address=list.get(i).getAddress();
     String Phone=list.get(i).getPhone();
     String Tel=list.get(i).getTel();
     String OpenTime=list.get(i).getOpenTime();
     String ShopInMap=list.get(i).getShopInMap();
     String Empty=list.get(i).getEmpty();
     String sql="insert into shopinfo values(shop_id.nextval,'"+district+"','"+Name+"','"+Address+"','"+Phone+"','"+Tel+"','"+OpenTime+"','"+ShopInMap+"','"+Empty+"')";
     System.out.println(sql);
   super.executeUpdate(sql, null);
   
  }
 }

 

7以后相同类型格式的文件只要修改文件所在位置String fileName就可以了

8.刚刚实现业务逻辑  还将继续修改方法  使功能更加灵活快速

 

原创粉丝点击