写个程序,分析QQ群聊天记录的,一个qq号码对应一个JSON,JSON里放聊天日期date,qq号码和聊天内容.
聊天记录的形式: xxxx年xx月xx日 xx时xx分xx秒 (xxxxxxxxx) xxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx xxxx年xx月xx日 xx时xx分xx秒 (xxxxxxxxx) xxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx 按行读取,如果出现xxxx年xx月xx日 xx时xx分xx秒 (xxxxxxxxx)的形式,就记录取得的日期和qq 继续按行读取把聊天记录直到下次遇到xxxx年xx月xx日 xx时xx分xx秒 (xxxxxxxxx)的形式,在遇到之前生成一json,遇到后清空json 放遇到的形式的日期和qq,循环。 代码:public void add2DB(JSONObject resultObj){ QQImportDao dao = QQImportDao.getInstance(); String content = Tools.toStr(resultObj.get("content")); if(content.length()>80){//聊天记录内容大于80就处理 String title = content.length()>150?content.substring(0, 150):content; title = title.replace("", ""); String topicQQ = Tools.toStr(resultObj.get("qq")); String date = Tools.toStr(resultObj.get("date")); if(!dao.isExist("select 1 from forum..f_topic where title='"+title+"' and topicQQ='"+topicQQ+"'")){ dao.add(topicQQ, title,content,date); } }} public void process(){ File file = new File(getFileName()); if(!file.exists()){ System.err.println("文件不存在!"); return ; } try {// BufferedReader br = new BufferedReader(new FileReader(file));// String line = br.readLine();// System.out.println(line); Scanner s = new Scanner(file); int startFlag = 0; String date="",qq=""; StringBuilder content= new StringBuilder();// String qunNum=""; JSONObject resultObj = new JSONObject(); while(s.hasNextLine()){ String line = Tools.toStr(s.nextLine()); if(line.length()>0){ if(line.indexOf("豪迪软件")!=-1)continue;// JSONObject qunBeginObj = QQRecordUtils.parseBeginRecord(line);// if(Boolean.parseBoolean(Tools.toStr(qunBeginObj.get("isBegin")))){// qunNum = Tools.toStr(qunBeginObj.get("qq"));// content= new StringBuilder();// continue;// } JSONObject beginObj = QQRecordUtils.parseBeginRecord(line); if(Boolean.parseBoolean(Tools.toStr(beginObj.get("isRecordBegin")))){ startFlag++; date = Tools.toStr(beginObj.get("date")); qq = Tools.toStr(beginObj.get("qq")); if(startFlag==1){ //第一次遇到 初始化date qq content resultObj.put("date", date); resultObj.put("qq", qq); content= new StringBuilder(); continue; } if(startFlag%2==0){ //第二次遇到 生成resultObj 处理resultObj 重新初始化resultObj content.append("联系QQ:"+resultObj.get("qq")); resultObj.put("content", content); System.out.println(resultObj);//处理完整的 add2DB(resultObj); resultObj = new JSONObject(); resultObj.put("date",date); resultObj.put("qq", qq); content= new StringBuilder(); continue; } if(startFlag%2==1){ //第三次遇到 content.append("联系QQ:"+resultObj.get("qq")); resultObj.put("content", content); System.out.println(resultObj);//处理完整的 add2DB(resultObj); resultObj.put("date", date); resultObj.put("qq", qq); content= new StringBuilder(); continue; } }else{ content.append(line+""); } } } //收尾: if(Tools.toStr(content).length()>0){ resultObj.put("content", content); System.out.println(resultObj);//处理完整的 } } catch (Exception e){ e.printStackTrace(); }}