首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

求人帮忙解析一下下边这段日志,用java实现?

2013-07-04 
求人帮忙解析一下下面这段日志,用java实现??本帖最后由 Henry_YQH 于 2013-05-31 19:35:06 编辑有一段数据

求人帮忙解析一下下面这段日志,用java实现??
本帖最后由 Henry_YQH 于 2013-05-31 19:35:06 编辑 有一段数据是这样的 :


14:00:00
请求:
Action=46

14:00:00
请求:功能号[46]: FCVTType=6 FEncodeType=2
IP=221.237.115.172
Action=46
GateWayIp=221.237.115.172

14:00:00
应答:功能号[46] FCVTType=6 FEncodeType=2
IP=221.237.115.172
Action=46
ErrorNo=0


14:00:00
请求:功能号[150]: FCVTType=6 FEncodeType=2
IP=221.7.7.64
Action=INQUIRESTOCKNUM
YybCode=21505
Account=A264680762
AccountType=SHACCOUNT
Password=70358030CF14F5A6BBDC71746FA75CD6
MobileCode=13909491477
CheckKEY=5441
Token=5qxuPv26700
Reqno=242
StartPos=0
MaxCount=10
CellIndex=6201
StockCode=000063
Direction=B
CommBatchEntrustInfo=1
NeedCheck=0
MobileType=3
From=tzt.gtja.ipad
AccountList=股东帐号类别|股东代码|主副标志|客户代码|股东姓名|
SHACCOUNT|A264680762|主股东帐号|12100296|韦林|
SZACCOUNT|0139367060|主股东帐号|12100296|韦林|

iPhoneKey=376668800
ZLib=3
HsString=
mac=00:00:00:00:00:70
mobilekind=ipad
phonever=6.0.1
phonekind=iPad
IMEI=99e44d4ec61f6caeffa9c7874d6ecdae9169b82d
GateWayIp=221.7.7.64
UserName=韦林
FundAccount=10077587
KHBranch=620103
UserCode=12100296
BANKINDENT=6004
Encrypt=1


14:00:00
应答:功能号[150] FCVTType=6 FEncodeType=2
IP=221.7.7.64
Account=0139367060
AccountType=SZACCOUNT
Token=5qxuPv26700
Reqno=242
MaxCount=2
ErrorNo=0
Price=12.980
Volume=2
CommBatchEntrustInfo=1
BankVolume=11490.98
Title=涓叴閫氳

14:00:00
请求:
Action=46



最终我想把上面的数据解析成可以放进数据库中的文件。上面一般都是键值对,数据库中只要存值就行了。
只要把下面的第二行放进数据库 ,作为每一列的值存起来。
时间          trpe     action     功能号      GateWayIp      FEncodeType  Reqno   Price   ....
14:00:00      应答       46       150     221.237.115.172    2           242     12.980

我主要不知道,怎样将每个时间段(比如14:00:00)分到每个while中循环一次 ,然后跳出while,继续下一个时间组的while循环。

java实现确实很烦,要不断的slipt,subString等等。。。
求高手帮忙一下,哪怕给个简单的提示也行。。
谢谢了~~~



[解决办法]
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

public class ParseFile {

FileInputStream fi = null;
BufferedReader br = null;
String newFilePath  = "";
File newFile = null;
FileWriter fw = null;
BufferedWriter bw = null;

public ParseFile() throws Exception {



fi = new FileInputStream("D:\\file\\file.log");
br = new BufferedReader(new InputStreamReader(fi,"GB2312"));
newFilePath  = "D:\\file\\newFile.log";
newFile = new File(newFilePath);
fw = new FileWriter(newFile, true);
bw = new BufferedWriter(fw);
}

public static void main(String[] args) {

try {
ParseFile parseFile = new ParseFile();
parseFile.parseFile();
} catch (Exception e) {
e.printStackTrace();
}
}
public void parseFile() throws Exception {

Map<String,String> map = new HashMap<String, String>();
Map<String,String> tempMap = new HashMap<String,String>();
String tempString = "";
try{
tempString = br.readLine();
map.put("time",tempString.trim());
while(true){
readNewRegion(map , tempMap);
}
}catch (Exception e){
e.printStackTrace();
}
if (bw != null) {
bw.close();
}
}

public  void readNewRegion(Map map ,Map tempMap)throws Exception{

if (tempMap.get("time")!=null){
map.put("time", tempMap.get("time"));
tempMap.clear();
}
String line = "";
String tempString = "";
if( (tempString  = br.readLine())!= null){
String [] temp = tempString.split(":");
     map.put("type", temp[0]);
}
String [] tempArr = new String [5];
String temp = "";
while((temp = br.readLine())!=null){
tempArr = temp.split(":");
if((tempArr.length == 3)&(tempArr[0].length()==2)){
tempMap.put("time", temp.trim());
break;
}
readNewLine(temp.trim(),map);
}
/*line =(map.get("time")) + "\t" + map.get("type") + "\t" + map.get("IP") + "\t" + map.get("MobileCode") + "\t" + map.get("MobileType") + "\t"
+ map.get("StockCode") + "\t" + map.get("CommBatchEntrustInfo") + "\t" + map.get("WTAccount") + "\t" + map.get("Price") + "\t"
+ map.get("Volume") + "\t" + map.get("Action") + "\t" + map.get("YybCode") + "\t" + map.get("Account") + "\t"
+ map.get("AccountType") + "\t" + map.get("Token") + "\t" + map.get("Reqno") + "\t" + map.get("MaxCount")
+ "\t" + map.get("ErrorNo") + "\t" + map.get("StockIndex") + "\t" + map.get("AccountIndex") + "\t"+ map.get("StockNumIndex")+ "\t"
+ map.get("ContactIndex")+ "\t"+ map.get("DrawIndex")+ "\t"+ map.get("UserName")+ "\t"+ map.get("UserType")+ "\t"+ map.get("GateWayIp")+ "\t"
+ map.get("Title")+ "\t"+ map.get("CellIndex")+ "\t"+ map.get("NeedCheck")+ "\t"+ map.get("ZLib")+ "\t"+ map.get("HsString");
map.clear();*/

line =(map.get("time")==null?"":map.get("time")) + "\t" + (map.get("type")==null?"":map.get("type"))+ "\t" + (map.get("IP")==null?"":map.get("IP")) + "\t" + (map.get("MobileCode")==null?"":map.get("MobileCode")) + "\t" + (map.get("MobileType")==null?"":map.get("MobileType")) + "\t"


+ (map.get("StockCode")==null?"":map.get("StockCode")) + "\t" + (map.get("CommBatchEntrustInfo")==null?"":map.get("CommBatchEntrustInfo")) + "\t" + (map.get("WTAccount")==null?"":map.get("WTAccount"))+ "\t" +(map.get("Price")==null?"":map.get("Price")) + "\t"
+(map.get("Volume")==null?"":map.get("Volume")) + "\t" +(map.get("Action")==null?"":map.get("Action")) + "\t" + (map.get("YybCode")==null?"":map.get("YybCode")) + "\t" + (map.get("Account")==null?"":map.get("Account")) + "\t"
+ (map.get("AccountType")==null?"":map.get("AccountType")) + "\t" + (map.get("Token")==null?"":map.get("Token")) + "\t" +(map.get("Reqno")==null?"":map.get("Reqno")) + "\t" + (map.get("MaxCount")==null?"":map.get("MaxCount"))+ "\t"
+ (map.get("ErrorNo")==null?"":map.get("ErrorNo")) + "\t" +(map.get("StockIndex") ==null?"":map.get("StockIndex"))+ "\t" +( map.get("AccountIndex")==null?"":map.get("AccountIndex")) + "\t"+ (map.get("StockNumIndex")==null?"":map.get("StockNumIndex"))+ "\t"
+ (map.get("ContactIndex")==null?"":map.get("ContactIndex"))+ "\t"+ (map.get("DrawIndex")==null?"":map.get("DrawIndex"))+ "\t"+( map.get("UserName")==null?"":map.get("UserName"))+ "\t"+( map.get("UserType")==null?"":map.get("UserType"))+ "\t"+ (map.get("GateWayIp")==null?"":map.get("GateWayIp"))+ "\t"
+ (map.get("Title")==null?"":map.get("Title"))+ "\t"+ (map.get("CellIndex")==null?"":map.get("CellIndex"))+ "\t"+ (map.get("NeedCheck")==null?"":map.get("NeedCheck"))+ "\t"+ (map.get("ZLib")==null?"":map.get("ZLib"))+ "\t"+ (map.get("HsString")==null?"":map.get("HsString"));

map.clear();
bw.write(line);
bw.newLine();
System.out.println(line);
bw.flush();
}
public  Map readNewLine(String line,Map map)throws Exception{

String [] temp =new String[2];
temp = line.split("=");

if(temp.length > 1){
if(temp[0].equals("IP")){
map.put("IP", temp[1]);
}
if(temp[0].equalsIgnoreCase("MobileCode")){
map.put("MobileCode", temp[1]);
}
if(temp[0].equalsIgnoreCase("MobileType")){
map.put("MobileType", temp[1]);
}
if(temp[0].equalsIgnoreCase("StockCode")){
map.put("StockCode", temp[1]);
}
if(temp[0].equalsIgnoreCase("CommBatchEntrustInfo")){
map.put("CommBatchEntrustInfo", temp[1]);
}
if(temp[0].equalsIgnoreCase("WTAccount")){
map.put("WTAccount", temp[1]);
}
if(temp[0].equalsIgnoreCase("Price")){
map.put("Price", temp[1]);
}
if(temp[0].equalsIgnoreCase("Volume")){
map.put("Volume", temp[1]);
}
if(temp[0].equalsIgnoreCase("Action")){
map.put("Action", temp[1]);
}
if(temp[0].equalsIgnoreCase("YybCode")){
map.put("YybCode", temp[1]);
}
if(temp[0].equalsIgnoreCase("Account")){
map.put("Account", temp[1]);
}
if(temp[0].equalsIgnoreCase("AccountType")){
map.put("AccountType", temp[1]);
}
if(temp[0].equalsIgnoreCase("Token")){
map.put("Token", temp[1]);
}
if(temp[0].equalsIgnoreCase("Reqno")){
map.put("Reqno", temp[1]);
}
if(temp[0].equalsIgnoreCase("MaxCount")){
map.put("MaxCount", temp[1]);
}
if(temp[0].equalsIgnoreCase("ErrorNo")){
map.put("ErrorNo", temp[1]);
}


if(temp[0].equalsIgnoreCase("StockIndex")){
map.put("StockIndex", temp[1]);
}
if(temp[0].equalsIgnoreCase("AccountIndex")){
map.put("AccountIndex", temp[1]);
}
if(temp[0].equalsIgnoreCase("StockNumIndex")){
map.put("StockNumIndex", temp[1]);
}
if(temp[0].equalsIgnoreCase("ContactIndex")){
map.put("ContactIndex", temp[1]);
}
if(temp[0].equalsIgnoreCase("DrawIndex")){
map.put("DrawIndex", temp[1]);
}
if(temp[0].equalsIgnoreCase("UserName")){
map.put("UserName", temp[1]);
}
if(temp[0].equalsIgnoreCase("UserType")){
map.put("UserType", temp[1]);
}
if(temp[0].equalsIgnoreCase("GateWayIp")){
map.put("GateWayIp", temp[1]);
}
if(temp[0].equalsIgnoreCase("Title")){
map.put("Title", temp[1]);
}
if(temp[0].equalsIgnoreCase("CellIndex")){
map.put("CellIndex", temp[1]);
}
if(temp[0].equalsIgnoreCase("NeedCheck")){
map.put("NeedCheck", temp[1]);
}
if(temp[0].equalsIgnoreCase("ZLib")){
map.put("ZLib", temp[1]);
}
if(temp[0].equalsIgnoreCase("HsString")){
map.put("HsString", temp[1]);
}
}
return map ;

}

}


[解决办法]
是文件还是字符串,用正则表达式搞定应该很简单

热点排行