public static final SimpleDateFormat SDF_CHILD_PATH = new SimpleDateFormat("yyyyMMdd_HHmmssSSS");
public void messageProcess(String filePathName,String txtPathName,String identifier) { File file = new File(filePathName); String shopId=""; String shopStatus=""; List<Map<String,Object>> shopInfoList = new ArrayList<Map<String,Object>>(); File file2 = null; FileOutputStream out = null; BufferedOutputStream bf = null; int count = 0; List<File> fileslist = new ArrayList<File>(); List<File> listfiles = new ArrayList<File>(); sort(fileslist,file); try { SAXReader saxReader = new SAXReader(); for (File shopFile : fileslist) { String fileName = shopFile.getName(); String fileDate = StringUtils.split(fileName,"_")[0]; // 删除前天的数据 Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DATE,-2); if (fileDate.equals(SDF_TIME.format(new Timestamp(calendar.getTimeInMillis())))) { FileUtils.deleteFile(shopFile.getPath()); } // 解析今天的数据 if (!fileDate.equals(SDF_TIME.format(new Date()))) { continue; } logger.info("开始处理文件" + fileName); // System.out.println(shopFile.getPath()); // 解析一个具体的文档 sort(listfiles,shopFile); for (File file1 : listfiles) { Reader reader = new InputStreamReader(new FileInputStream(file1),"UTF-8"); Document doc = saxReader.read(reader); List<?> shopList = doc.selectNodes(identifier); for (int i = 0; i < shopList.size(); i++) { Map<String,Object> map = new HashMap<String,Object>(); Element shop = (Element) shopList.get(i); for (Iterator<?> iter = shop.elementIterator(); iter.hasNext();) { Element element = (Element) iter.next(); if("shopId".equals(element.getName())){ shopId=element.getText(); shopStatus=statusMap.get(shopId); if(null==shopStatus){ shopStatus="0"; } } if ("brandList".equals(element.getName())) { List<Element> list = element.elements(); List<String> brandNameList = new ArrayList<String>(); for (Element e : list) { brandNameList.add(e.getText()); } map.put("shopStatus",shopStatus); map.put(list.get(0).getName(),brandNameList); } else if ("categoryList".equals(element.getName())) { List<?> list = element.selectNodes("categoryInfo"); List<String> categoryList = new ArrayList<String>(); for(int j = 0; j < list.size(); j++){ Element category = (Element) list.get(j); for (Iterator<?> cateIter = category.elementIterator(); cateIter.hasNext();) { Element ele = (Element) cateIter.next(); if("categoryName".equals(ele.getName())){ categoryList.add(ele.getText()); } } } if(statusMap.get(shopId)!=null){ map.put("shopStatus",shopStatus); } map.put("category",categoryList); } else { map.put(element.getName(),element.getText()); } } shopInfoList.add(map); count++; if (count == SystemArgument.SHOP_COUNT) { file2 = new File(txtPathName + File.separator + SystemArgument.SDF_CHILD_PATH.format(new Date()) + ".txt"); if (!file2.exists()) { boolean isExit = file2.createNewFile(); if (isExit == true) { out = new FileOutputStream(file2); bf = new BufferedOutputStream(out); } else { logger.error("在" + file2.getName() + "创建文件的时候失败"); } } else { out = new FileOutputStream(file2); bf = new BufferedOutputStream(out); } JSONArray ja = JSONArray.fromObject(shopInfoList); bf.write(ja.toString().concat("\n").getBytes("UTF-8")); bf.flush(); count = 0; shopList.clear(); } } } logger.info("文件" + fileName + "处理结束!"); } if (!shopInfoList.isEmpty()) { file2 = new File(txtPathName + File.separator + SystemArgument.SDF_CHILD_PATH.format(new Date()) + ".txt"); if (!file2.exists()) { boolean isExit = file2.createNewFile(); if (isExit == true) { out = new FileOutputStream(file2); bf = new BufferedOutputStream(out); } else { logger.error("在" + file2.getName() + "创建文件的时候失败"); } } else { out = new FileOutputStream(file2); bf = new BufferedOutputStream(out); } JSONArray ja = JSONArray.fromObject(shopInfoList); bf.write(ja.toString().concat("\n").getBytes("UTF-8")); bf.flush(); } } catch (DocumentException e) { logger.error(e.getMessage(),e); } catch (UnsupportedEncodingException e) { logger.error(e.getMessage(),e); } catch (FileNotFoundException e) { logger.error(e.getMessage(),e); } catch (IOException e) { logger.error(e.getMessage(),e); } }