//HanPengNewAndOldServerGoodsTypeSpendCoin.java//import java.util.HashMap;import java.util.Date;import java.util.Calendar;import java.util.ArrayList;import java.util.Iterator;import java.text.SimpleDateFormat;import java.io.FileReader;import java.io.BufferedReader;import java.io.File;import java.io.FileOutputStream;import net.sf.json.JSONArray;import net.sf.json.JSONObject;//使用jason文件public class HanPengNewAndOldServerGoodsTypeSpendCoin{ private static String createDate(){ Calendar cal = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); cal.add(Calendar.DATE,-1); String date = sdf.format(cal.getTime()); return date; } //@SuppressWarnings("unchecked") private static JSONArray getSerList(File FileSer) throws Exception{ BufferedReader br = new BufferedReader(new FileReader(FileSer)); String temp = null; JSONArray serlist=null; while((temp=br.readLine())!=null){ //ArrayListserlist = new ArrayList (JSONArray.fromObject(temp)); serlist = JSONArray.fromObject(temp); //System.out.println(serlist.toString()); } System.out.println(serlist.toString()); return serlist; } private static void outPutMain(File FileSpend, JSONArray SerList, File FileOut, String Date) throws Exception{ String temp = null; BufferedReader br = new BufferedReader(new FileReader(FileSpend)); HashMap > serTypeCoin = new HashMap >(); while((temp=br.readLine())!=null){ String [] line = temp.split("\t"); String uid = line[1]; //String str = "123456789"; String ser = uid.substring(0,uid.length()-7); int coin = Integer.parseInt(line[4]); String goods = line[7]; //System.out.println(ser); //if (SerList.contains(ser)){ // System.out.println(); //} String type = (SerList.contains(ser))?"old":"new"; if (uid.substring(0,1).equals("g")){ //使用嵌套字典 if(serTypeCoin.get(type)==null){ HashMap hm = new HashMap (); hm.put(goods, coin); //serTypeCoin.put(type,new HashMap (){put(goods, coin);}) serTypeCoin.put(type, hm); }else{ if(serTypeCoin.get(type).get(goods)==null){ serTypeCoin.get(type).put(goods, coin); }else{ serTypeCoin.get(type).put(goods, serTypeCoin.get(type).get(goods)+coin); } } } } if(!FileOut.exists()) FileOut.createNewFile(); FileOutputStream out = new FileOutputStream(FileOut, true); Iterator it = serTypeCoin.keySet().iterator(); while(it.hasNext()){ String type = (String) it.next(); HashMap hm = (HashMap ) serTypeCoin.get(type); Iterator hmit = hm.keySet().iterator(); while(hmit.hasNext()){ String goods = hmit.next(); int coin = hm.get(goods); StringBuffer sb = new StringBuffer(); sb.append(Date+"\t"+type+"\t"+goods+"\t"+coin+"\n"); //System.out.println(Date+"\t"+type+"\t"+goods+"\t"+coin); out.write(sb.toString().getBytes("utf-8")); } System.out.println(type+":"+ serTypeCoin.get(type).size()); } } public static void main(String[] args) throws Exception{ String date = (args.length>=1)? args[0]:(createDate()); String superhero = "/home/data/superhero/"; String spendlogpath = superhero+"spendlog/"; String visopath = superhero+"viso_config/"; String outpath = superhero+"wang/result/"; String spendlogname = "spendlog_"+date; String visoser = "pub_ser_list_"+date; String outname = "new_and_old_server_goodstype_spend_coin_"+date; System.out.println(date); File filespend = new File(spendlogpath+spendlogname); File fileser = new File(visopath+visoser); File fileout = new File(outpath+outname); JSONArray serList = getSerList(fileser); outPutMain(filespend, serList, fileout, date); }}
在linux 环境下且需要引入外部jar包时进行编译代码的命令范例:
javac -classpath /home/data/superhero/wang/myjlib/json-lib-2.4-jdk15.jar \ HanPengNewAndOldServerGoodsTypeSpendCoin.java
编译后运行java的命令范例为:
java -Djava.ext.dirs=/home/data/superhero/wang/myjlib HanPengNewAndOldServerGoodsTypeSpendCoin
注: 参数 -Djava.ext.dirs=/目录 只在 jdk 1.6版本之后的才可用。 其中 目录,如范例中 \ /home/data/superhero/wang/myjlib 为存放外部jar 包的地址。