|  | 
 
| 本帖最后由 天使怪盗Dick 于 2011-1-6 18:14 编辑 
 复制代码 import java.awt.Color;
import java.awt.Desktop;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URL;
import java.util.Date;
import java.util.Random;
import java.util.Vector;
import javax.imageio.ImageIO;
public class CodiacApp {
class VotingMB{
  String Name,Code,Vote,DZ;
  int date,time,num;
  boolean fp,ck,ot;
  VotingMB(){
   Name=new String();
   Code=new String();
   Vote=new String();
   DZ=new String();
   date=time=0;
   fp=ck=ot=false;
  }
}
class VotingLJ{
  String Name;
  int rank,count;
  VotingLJ(){
   Name=new String();
   rank=count=0;
  }
}
int ctmp;
java.util.Date date2;
static String[][] ListA;
static int[][] ListB;
static int[][] ListC;
static int[][] ListD;
Vector vName,vCode,vVote,vDate,vTime,vString,vBname,vOther,vLJ;
StringBuffer sb = new StringBuffer();
StringBuffer sb1 = new StringBuffer();
StringBuffer sb2 = new StringBuffer();
StringBuffer sb3 = new StringBuffer();
StringBuffer sb4 = new StringBuffer();
StringBuffer sb7 = new StringBuffer();
boolean ReadInfo;
boolean ReadTotal;
int total;
boolean MayInsert;
int insert;
boolean ReadName;
boolean ReadyReadName;
boolean ReadyReadTime;
boolean ReadyToRead;
boolean ReadTime;
VotingMB vTemp=null;
VotingMB vTemp1=null;
String temp;
boolean IP;
int tot;
int dt;
String DZtemp;
int zushu;
int ketoushu;
int meizujueseshu;
String TZnum;
long ttt;
boolean cc,nc;
@SuppressWarnings("deprecation")
void bg(){
  vName=new Vector();
  vCode=new Vector();
  vVote=new Vector();
  vDate=new Vector();
  vTime=new Vector();
  vString=new Vector();
  vOther=new Vector();
  date2 = new Date();
  vBname=new Vector();
  vLJ=new Vector();
  ttt=System.currentTimeMillis();
  tot=0;
  if(ReadConfig("nc").equalsIgnoreCase("true")){
   TZnum = getTzNum();
   System.out.println(TZnum);
   dt=(date2.getYear()%100*10000)+((date2.getMonth()+1)*100)+date2.getDate();
   getcharname();
   meizujueseshu=2;
   ketoushu=1;
  }else{
   TZnum = ReadConfig("TZnum");
   dt=Integer.parseInt(ReadConfig("dt"));
   zushu=Integer.parseInt(ReadConfig("zushu"));
   meizujueseshu=Integer.parseInt(ReadConfig("meizujueseshu"));
   ketoushu=Integer.parseInt(ReadConfig("ketoushu"));
   ListA= new String[zushu][meizujueseshu];
   ReadCharacters();
  }
  if(ReadConfig("cc").equalsIgnoreCase("true")){
   cc=true;
  }else{
   cc=false;
  }
  
  ListB= new int[zushu][meizujueseshu];
  ListC= new int[zushu][meizujueseshu];
  ListD=new int[zushu*meizujueseshu][133];
  total=Integer.MAX_VALUE;
  InputStream is = getClass().getResourceAsStream("codelist.txt");
  InputStreamReader isr = new InputStreamReader(is);
  int chr;
  sb=new StringBuffer();
  sb.delete(0, sb.length());
  int fdsa=0;
  try {
   while((chr=isr.read())!=-1){
    if(chr=='\n'||chr=='\r'||chr==' '){
     if(sb.length()!=0){
      vBname.addElement(sb.toString());
      System.out.println(fdsa++);
      System.out.println(sb.toString());
      sb.delete(0, sb.length());
     }
    }else{
     sb.append((char)chr);
    }
   }
  } catch (IOException e1) {
   e1.printStackTrace();
  }
  try {
   isr.close();
   is.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
}
void getcharname(){
  InputStream is = getClass().getResourceAsStream(getHttpData("http://tieba.baidu.com/f?ct=335544320&lm=0&rn=30&tn=postBrowserN&sc=0&z="+TZnum+"&pn="+0+"&rs1=2", "httptemp.txt"));
  InputStreamReader isr = new InputStreamReader(is);
  int chr;
  StringBuffer sb=new StringBuffer();
  String s;
  try {
   while((chr=isr.read())!=-1){
    sb.append((char)chr);
   }
   isr.close();
   is.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
  s=sb.toString();
  int index=0;
  int end=0;
  index=s.indexOf("<cc>",s.indexOf("<cc>")+1);
  end=s.indexOf("</cc>",s.indexOf("</cc>")+1)-1;
  for(int i=0;index<end;index+=8,i++){
   //ListA[i/2][i%2]=
   if(s.indexOf(">>",index)==-1||s.indexOf("<<",index)==-1){
    break;
   }else if(s.indexOf("<<",index)>s.indexOf(">>",index)){
    index=s.indexOf(">>",index)+1;
   }
   if(s.indexOf(">>", index)>end){
    break;
   }
   System.out.println(("<<"+s.substring(s.indexOf("<<", index)+8, index=s.indexOf(">>", index))+">>"));
   //s.substring(s.indexOf("<<", index)+8, index=s.indexOf(">>", index))
   zushu=i/2+1;
   System.out.println(index);
  }
  System.out.println(zushu);
  System.out.println(end);
  index=s.indexOf("<cc>",s.indexOf("<cc>")+1);
  ListA=new String[zushu][2];
  for(int i=0;index<end;index+=8,i++){
   if(s.indexOf(">>",index)==-1||s.indexOf("<<",index)==-1){
    break;
   }else if(s.indexOf("<<",index)>s.indexOf(">>",index)){
    index=s.indexOf(">>",index)+1;
   }
   if(s.indexOf(">>", index)>end){
    break;
   }
   ListA[i/2][i%2]=("<<"+s.substring(s.indexOf("<<", index)+8, index=s.indexOf(">>", index))+">>");
   //s.substring(s.indexOf("<<", index)+8, index=s.indexOf(">>", index))
  }
}
public static void main(String[] args) {
  CodiacApp app =new CodiacApp();
  try {
   Runtime.getRuntime().exec("C:/Program Files/Internet Explorer/iexplore.exe "+"file://"+app.getAppPath(app.getClass())+"/hulizuiweida/index.html");
  // Desktop.getDesktop().browse(new URI("file://"+app.getAppPath(app.getClass())+"/hulizuiweida/index.html"));
  } catch (Exception e) {
   e.printStackTrace();
  }
  System.out.println(System.currentTimeMillis()-app.ttt);
}
CodiacApp(){
  bg();
  for(int i=0;i<=total;i+=30){
   getWord(getHttpData("http://tieba.baidu.com/f?ct=335544320&lm=0&rn=30&tn=postBrowserN&sc=0&z="+TZnum+"&pn="+i+"&rs1=2", "httptemp.txt"));
  }
  System.out.println("------------------------");
  CheckVote( dt,zushu,ketoushu);
  OutPut();
}
public String getTzNum(){
  InputStream is = getClass().getResourceAsStream(getHttpData("http://tieba.baidu.com/f?tn=bdAdvResult&kw=&ct=352321536&lm=65541&rs5=1&rs2=2&sn=%C3%C8%D5%BD&word=%CD%B6%C6%B1%C2%A5&un=CIP%B1%AD%C3%C8%D5%BD%D4%CB%D3%AA&rs1=0&rn=10", 
  "s.tmp"));
  InputStreamReader isr = new InputStreamReader(is);
  int chr;
  StringBuffer sb=new StringBuffer();
  try {
   while((chr=isr.read())!=-1){
    sb.append((char)chr);
   }
   isr.close();
   is.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
  String s=sb.toString();
  return s.substring(s.indexOf("z=",
    s.indexOf("/f?ct=335675392&tn=baiduPostBrowser"))+2,
    s.indexOf("&",
      s.indexOf("z=",
        s.indexOf("/f?ct=335675392&tn=baiduPostBrowser"))));
}
public void getWord(String filename){
  InputStream is = getClass().getResourceAsStream(filename);
  InputStreamReader isr = new InputStreamReader(is);
  int chr;
  try {
   while((chr=isr.read())!=-1){
    int insertCount=0;
    if(chr=='@'){
     chr='@';
    }
    if(chr=='"'){
     ReadyToRead=!ReadyToRead;
    }else if(chr==62){
     //System.out.println(sb);
     ReadyToRead=false;
     if (sb.toString().equalsIgnoreCase("cc")) {
      ReadInfo=true;
      sb1.delete(0, sb1.length());
     }else if (sb.toString().equalsIgnoreCase("span class=")) {
      ReadTotal=true;
      sb7.delete(0, sb7.length());
     }else if (sb.toString().equalsIgnoreCase("/span")&&ReadTotal) {
      ReadTotal=false;
      if(sb7.charAt(0)>57){
      }else{
       total = Integer.parseInt(sb7.toString());
       //System.out.println(sb7);
      }
     }else if (sb.toString().equalsIgnoreCase("/cc")) {
      ReadInfo=false;
      if(MayInsert){
       sb1.insert(insert-1, sb4.toString());
      }
      sb1.append(';');
      vString.add(sb1.toString().toUpperCase());
      System.out.println(sb1);
     }else if(sb.toString().equalsIgnoreCase("/ul")&&ReadyReadName){
      ReadyReadTime=!ReadyReadTime;
     }else if(sb.toString().equalsIgnoreCase("td align= class=")){
      ReadyReadName=true;
     }else if(sb.toString().equalsIgnoreCase("/td")&&ReadyReadName){
      ReadyReadName=false;
     }else if(sb.toString().equalsIgnoreCase("br")&&ReadInfo){
      sb1.append(';');
     }else if((sb.toString().equalsIgnoreCase("a href= target=")||sb.toString().equalsIgnoreCase("li class="))&&(ReadyReadName&&!ReadyReadTime)){
      ReadName=true;
      sb2.delete(0, sb2.length());
     }else if(ReadName){
      if( sb.toString().equalsIgnoreCase("/a")){
       ReadName=false;
       if(MayInsert){
        sb2.insert(insert-1, sb4.toString());
       }
       vName.add(sb2.toString());
       System.out.println(sb2);
      }else if(sb.toString().equalsIgnoreCase("/li")){
       ReadName=false;
       if(MayInsert){
        sb2.insert(insert-1, sb4.toString());
       }
       sb2.delete(0, 3);
       vName.add(sb2.toString());
       System.out.println(sb2); 
      }
     }else if(sb.toString().equalsIgnoreCase("li class=")&&ReadyReadTime){ 
      ReadTime=true;
      sb3.delete(0, sb3.length());
     }else if((sb.toString().equalsIgnoreCase("/li")&&ReadTime)){///span
      ReadTime=false;
      ReadyReadName=false;
      ReadyReadTime=false;
      sb3.append(' ');
      vDate.add(Integer.toString(getDate(sb3.toString())));
      vTime.add(Integer.toString(getTime(sb3.toString())));
      // System.out.println(sb3);
     }
    }else if(chr==60){
     ReadyToRead=true;
     sb.delete(0, sb.length());
    }else if(ReadyToRead){
     sb.append(((char)chr));
    }else if(ReadInfo){
     if(chr==';'&&MayInsert){
      MayInsert=false;
      if(sb4.toString().equalsIgnoreCase("nbsp")){
       sb1.insert(insert, " ");
      }else if(sb4.toString().equalsIgnoreCase("lt")){
       sb1.insert(insert, "<");
      }else if(sb4.toString().equalsIgnoreCase("gt")){
       sb1.insert(insert, ">");
      }else if(sb4.toString().equalsIgnoreCase("quot")){
       sb1.insert(insert, """);
      }else if(sb4.toString().equalsIgnoreCase("#x30FB")){
      }else{
       sb1.insert(insert, "我不知道是什么号");
      }
     }else if(insertCount>5&&MayInsert){
      MayInsert=false;
      sb1.insert(insert, "&");
     }else if((chr=='&'&&MayInsert)){
      MayInsert=false;
      sb1.insert(insert,"&&");
     }else if(chr=='&'&&(!MayInsert)){
      MayInsert=true;
      sb4.delete(0, sb4.length());
      insert=sb1.length();
      insertCount=0;
     }else{
      if(MayInsert){
       insertCount++;
       sb4.append((char)chr);
      }else{
       sb1.append((char)chr);
      }
     }
     //#x30FB
    }else if (ReadName) {
     if(chr==';'&&MayInsert){
      MayInsert=false;
      if(sb4.toString().equalsIgnoreCase("nbsp")){
       sb2.insert(insert, "");
      }else if(sb4.toString().equalsIgnoreCase("lt")){
       sb2.insert(insert, "<");
      }else if(sb4.toString().equalsIgnoreCase("gt")){
       sb2.insert(insert, ">");
      }else if(sb4.toString().equalsIgnoreCase("quot")){
       sb2.insert(insert, """); 
      }else if(sb4.toString().equalsIgnoreCase("#x30FB")){
      }else{
       sb2.insert(insert, "我不知道是什么号");
      }
      continue;
     }else if(insertCount>5&&MayInsert){
      MayInsert=false;
      sb2.insert(insert, "&");
     }else if((chr=='&'&&MayInsert)){
      MayInsert=false;
      sb2.insert(insert,"&&");
     }else if(chr=='&'&&(!MayInsert)){
      MayInsert=true;
      sb4.delete(0, sb4.length());
      insert=sb2.length();
      insertCount=0;
     }else{
      if(MayInsert){
       insertCount++;
       sb4.append((char)chr);
      }else{
       sb2.append((char)chr);
      }
     }
    }else if (ReadTime) {
     sb3.append((char)chr);
    }else if(ReadTotal){
     sb7.append(((char)chr));
    }
   }
  } catch (IOException e1) {
   e1.printStackTrace();
  }
  try {
   isr.close();
   is.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
}
public boolean checkCode(String s){
  int vz=vBname.size();
  for(int i=0;i<vz;i++){
   if(s.equalsIgnoreCase((String)vBname.elementAt(i))){
    ctmp=i;
    return true;
   };
  }
  return false;
}
public boolean CheckCode(String str1){
  //  StringBuffer s=new StringBuffer();
  //  for(int i=0;i<str1.length();i++){
  //   if(str1.charAt(i)=='@'||str1.charAt(i)=='<'||str1.charAt(i)==';'||str1.charAt(i)<45||(str1.charAt(i)>65281&&str1.charAt(i)>65295)||str1.charAt(i)==12288||str1.charAt(i)=='('){
  //    if(str.equalsIgnoreCase(s.toString())) return true;
  //    else s.delete(0, s.length());;
  //   }else{
  //    s.append(str1.charAt(i));
  //   }
  //  }
  for(int i=0;i<str1.length();i++){
   if(str1.indexOf("]]",i)==-1||str1.indexOf("[[",i)==-1){
    return false;
   }else if(str1.indexOf("[[",i)>str1.indexOf("]]",i)){
    i=str1.indexOf("]]",i)+1;
   }else if(checkCode(str1.substring(str1.indexOf("[[",i)+2,str1.indexOf("]]",i)))){
    return true;
   }else{
    i=str1.indexOf("]]",i)+1;
   }
  }
  return false;
}
public void CollectCode(String str1){
  //  StringBuffer s=new StringBuffer();
  //  for(int i=0;i<str1.length();i++){
  //   if(str1.charAt(i)=='@'||str1.charAt(i)=='<'||str1.charAt(i)==';'||str1.charAt(i)<45||(str1.charAt(i)>65281&&str1.charAt(i)>65295)||str1.charAt(i)==12288||str1.charAt(i)=='('){
  //    if(str.equalsIgnoreCase(s.toString())) return true;
  //    else s.delete(0, s.length());;
  //   }else{
  //    s.append(str1.charAt(i));
  //   }
  //  }
  for(int i=0;i<str1.length();i++){
   if(str1.indexOf("]]",i)==-1||str1.indexOf("[[",i)==-1){
    return ;
   }else if(str1.indexOf("[[",i)>str1.indexOf("]]",i)){
    i=str1.indexOf("]]",i)+1;
   }else if(str1.indexOf("]]",i)-str1.indexOf("[[",i)+2==(date2.getDate()>9?21:20)){
    if(str1.substring(str1.indexOf("[[",i)+2,str1.indexOf("-",str1.indexOf("[[",i))+1).equalsIgnoreCase("CIP"+date2.getDate()+"-")){
     if('-'==str1.charAt(str1.indexOf("-",str1.indexOf("-",str1.indexOf("[[",i))))){
      vBname.addElement(str1.substring(str1.indexOf("[[",i)+2,str1.indexOf("]]",i)).toString());
      System.out.println(str1.substring(str1.indexOf("[[",i)+2,str1.indexOf("]]",i)));
     }
    }
   }else{
    i=str1.indexOf("]]",i)+1;
   }
  }
  return ;
}
// public boolean CheckCode(String str1){
//  StringBuffer s=new StringBuffer();
//  String ttmp;
//  for(int l=0;l<vCode.size();l++){
//   ttmp=(String)vCode.elementAt(l);
//   for(int i=0;i<str1.length();i++){
//    if(str1.charAt(i)==';'||str1.charAt(i)=='['||str1.charAt(i)==']'||str1.charAt(i)=='\r'||str1.charAt(i)=='\n'||str1.charAt(i)==' '){
//     if(ttmp.equalsIgnoreCase(s.toString())) {
//      System.out.println(s.toString());
//      return false;
//     }
//     else {
//      s.delete(0, s.length());;
//     }
//    }else{
//     s.append(str1.charAt(i));
//    }
//   }
//  }
//  for(int i=0;i<str1.length();i++){
//   if(str1.charAt(i)==';'||str1.charAt(i)=='['||str1.charAt(i)==']'||str1.charAt(i)=='\r'||str1.charAt(i)=='\n'||str1.charAt(i)==' '){
//    if(checkCode(s.toString())) {
//     System.out.println(s.toString());
//     return true;
//    }
//    else {
//     s.delete(0, s.length());;
//    }
//   }else{
//    s.append(str1.charAt(i));
//   }
//  }
//  return false;
// }
public String getHttpData(String url,String filename){
  try   
  { 
   URL myURL = new URL(url); 
   HttpURLConnection con =(HttpURLConnection) myURL.openConnection();
   String rm;
   while(!(rm=con.getResponseMessage()).equalsIgnoreCase("OK")){
    System.out.println(rm);
    try {
     Thread.sleep(1000);
    } catch (Exception e) {
    }
   }
   con.connect();
   BufferedReader bfr = new BufferedReader(new InputStreamReader(con.getInputStream())); 
   String line = null; 
   File file = new File(filename);
   if(file.exists()){
    file.delete();
   }
   file=null;
   file=new File(filename);
   FileOutputStream fos = new FileOutputStream(file);
   DataOutputStream dos = new DataOutputStream(fos);
   try {
    file.createNewFile();
   } catch (IOException e) {
   }
   while ((line = bfr.readLine())!=null)
   {
    fos.write(line.getBytes());
   }
   dos.close();
   fos.close();
   bfr.close(); 
  }
  catch(Exception exz) 
  { 
  } 
  return filename;
}
public String ReadConfig(String str) {
  try{
   StringBuffer s=new StringBuffer();
   int chr;
   boolean b1=false;
   InputStream is = getClass().getResourceAsStream("Config.ini");
   InputStreamReader isr = new InputStreamReader(is);
   while((chr=isr.read())!=-1){
    if(chr==' '){
     continue;
    }else if(chr=='='){
     if(str.equalsIgnoreCase(s.toString())){
      b1=true;
      s.delete(0,s.length());
      continue;
     }else{
      while((chr=isr.read())!=-1)
       if(chr=='\n')        
        break;
     }
     s.delete(0,s.length());
     continue;
    }else {
     if(b1){
      if(chr=='\n'||chr=='\r'){
       isr.close();
       is.close();
       if(s.length()==0)
        return "";
       else
        return s.toString();
      }
     }
     if(chr!='\n'||chr!='\r')
      s.append((char)chr);
    }
   }
   isr.close();
   is.close();
  }catch (IOException e) {
   System.out.println("READ CONFIG ERROR!");
  }
  return null;
}
public int getTime(String str){
  int Time=0;
  StringBuffer sbt=new StringBuffer();
  boolean b1=false,b2=false;
  for(int i=1;i<str.length();i++){
   if(b2){
    if(str.charAt(i)==' '){
     Time+=Integer.parseInt(sbt.toString());
     sbt.delete(0, sbt.length());
     return Time;
    }
    sbt.append(str.charAt(i));
   }else if(b1){
    if(str.charAt(i)==':'){
     Time+=Integer.parseInt(sbt.toString())*100;
     sbt.delete(0, sbt.length());
     b2=true;
     continue;
    }
    sbt.append(str.charAt(i));
   }else{
    if(str.charAt(i)==' '){
     sbt.delete(0, sbt.length());
     b1=true;
     continue;
    }
   }
  }
  return Time;
}
public int getDate(String str){
  StringBuffer sbt=new StringBuffer();
  int date=0;
  boolean b1=false,b2=false;
  for(int i=1;i<str.length();i++){
   if(b2){
    if(str.charAt(i)==' '){
     date+=Integer.parseInt(sbt.toString());
     sbt.delete(0, sbt.length());
     return date;
    }
    sbt.append(str.charAt(i));
   }else if(b1){
    if(str.charAt(i)=='-'){
     date+=Integer.parseInt(sbt.toString())*100;
     sbt.delete(0, sbt.length());
     b2=true;
     continue;
    }
    sbt.append(str.charAt(i));
   }else{
    if(str.charAt(i)=='-'){
     date+=Integer.parseInt(sbt.toString())*10000;
     sbt.delete(0, sbt.length());
     b1=true;
     continue;
    }
    sbt.append(str.charAt(i));
   }
  }
  return date;
}
public boolean CheckVt(String str,String str1){
  //  StringBuffer s=new StringBuffer();
  //  for(int i=0;i<str1.length();i++){
  //   if(str1.charAt(i)=='@'||str1.charAt(i)=='<'||str1.charAt(i)==';'||str1.charAt(i)<45||(str1.charAt(i)>65281&&str1.charAt(i)>65295)||str1.charAt(i)==12288||str1.charAt(i)=='('){
  //    if(str.equalsIgnoreCase(s.toString())) return true;
  //    else s.delete(0, s.length());;
  //   }else{
  //    s.append(str1.charAt(i));
  //   }
  //  }
  for(int i=0;i<str1.length();i++){
   if(str1.indexOf(">>",i)==-1||str1.indexOf("<<",i)==-1){
    return false;
   }else if(str1.indexOf("<<",i)>str1.indexOf(">>",i)){
    i=str1.indexOf(">>",i)+1;
   }else if(str.equalsIgnoreCase(str1.substring(str1.indexOf("<<",i),str1.indexOf(">>",i)+2))){
    return true;
   }else{
    i=str1.indexOf(">>",i)+1;
   }
  }
  return false;
}
public void CheckVote(int date,int r,int u){
  boolean b1,b3,othername;
  b3=false;
  othername=false;
  StringBuffer s=new StringBuffer();
  for(int i=0;i<vName.size();i++){
   int dat,tim;
   othername=false;
   b1=true;
   b3=false;
   s.delete(0, s.length());
   b1=true;
   dat=Integer.parseInt((String)vDate.elementAt(i));
   tim=Integer.parseInt((String)vTime.elementAt(i));
   if(dat>date){
    b1=false;
   }else if(dat==date&&tim>2200){
    b1=false;
   }
   temp=(String)vString.elementAt(i);
   if(cc){
    CollectCode(temp);
   }
   if(b1&&CheckCode(temp)){
    int zz=0;
    int zzzz=0;
    temp=(String)vString.elementAt(i);
    for(int z=0;z<r;z++){
     zz=0;
     for(int j=0;j<ListA[z].length;j++){
      if(CheckVt(ListA[z][j], temp)){
       zz++;
       zzzz++;
       s.append('1');
      }else{
       s.append('0');
      };
     }
     s.append(';');
     if(zz>u){
      b3=true;
     }
    }
    if(zzzz==0){
     othername=true;
    }
    if(!b3){
     if(othername){
      vTemp=new VotingMB();
      temp=(String)vBname.elementAt(ctmp);
      vTemp.Code=temp;
      temp=(String)vName.elementAt(i);
      vTemp.Name=temp;
      temp=(String)vDate.elementAt(i);
      vTemp.date=Integer.parseInt(temp);
      temp=(String)vTime.elementAt(i);
      vTemp.time=Integer.parseInt(temp);
      vTemp.Vote=(String)vString.elementAt(i);
      vTemp.fp=b3;
      vTemp.ot=true;
      vVote.add(vTemp);
     }else{
      vTemp=new VotingMB();
      temp=(String)vBname.elementAt(ctmp);
      vTemp.Code=temp;
      temp=(String)vName.elementAt(i);
      vTemp.Name=temp;
      temp=(String)vDate.elementAt(i);
      vTemp.date=Integer.parseInt(temp);
      temp=(String)vTime.elementAt(i);
      vTemp.time=Integer.parseInt(temp);
      vTemp.Vote=s.toString();
      vTemp.fp=b3;
      vVote.add(vTemp);
     }
    }else{
     vTemp=new VotingMB();
     temp=(String)vBname.elementAt(ctmp);
     vTemp.Code=temp;
     temp=(String)vName.elementAt(i);
     vTemp.Name=temp;
     temp=(String)vDate.elementAt(i);
     vTemp.date=Integer.parseInt(temp);
     temp=(String)vTime.elementAt(i);
     vTemp.time=Integer.parseInt(temp);
     vTemp.Vote=s.toString();
     vTemp.fp=b3;
     vVote.add(vTemp);
    }
   }
  }
}
public void ReadCharacters(){
  for(int z=0;z<ListA.length;z++){
   for(int i=0;i<ListA[z].length;i++){
    ListA[z][i]=null;
   }
  }
  StringBuffer s=new StringBuffer();
  InputStream is = getClass().getResourceAsStream("list.txt");
  InputStreamReader isr = new InputStreamReader(is);
  int chr=0;
  try {
   int z=0;
   int i=0;
   while((chr=isr.read())!=-1){
    if(chr==';'){
     z++;
     i=0;
    }else if(chr==' '||chr=='\n'||chr=='\r'){
     if(s.length()==0){
     }else{
      ListA[z][i]=s.toString();
      i++;
      s.delete(0, s.length());
     }
     continue;
    }else {
     s.append((char)(chr));
    }
   }
   isr.close();
   is.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
  for(int z=0;z<ListA.length;z++){
   for(int i=0;i<ListA[z].length;i++){
    if(ListA[z][i]==null){
     ListA[z][i]="狐狸叔叔说这个很长很长的东西是没有用的,狐狸最伟大!";
    }
   }
  }
}
public void OutPut(){
  String enter="\r\n";
  String space=": ";
  String br="------------- ";
  File file;
  String line;
  FileOutputStream fos;
  VotingMB v1,v2;
  try {
   for(int i=0;i<vVote.size();i++){
    v1=(VotingMB)vVote.elementAt(i);
    for(int j=i+1;j<vVote.size();j++){
     v2=(VotingMB)vVote.elementAt(j);
     if(v1.Code.equalsIgnoreCase(v2.Code)&&v1.Name.equalsIgnoreCase(v2.Name)&&(v1.fp||v1.ot)){
      vVote.removeElementAt(i);
      i--;
      break;
     }else 
      if (v1.Code.equalsIgnoreCase(v2.Code)) {
       vVote.removeElementAt(j);
       j--;
      }
    }
   }
   tot=vVote.size();
  } catch (Exception e) {
  }
  try   
  { 
   file=new File("hulizuiweida/index_4.html");
   if(file.exists()){
    file.delete();
   }
   file=null;
   file=new File("hulizuiweida/index_4.html");
   fos=new FileOutputStream(file);
   //dos=new DataOutputStream(fos);
   try {
    file.createNewFile();
   } catch (IOException e) {
   }
   line = ("<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>狐狸最伟大</title><style type="text/css"><!--body { background-image: url(background.JPG);}--></style></head><body>");
   fos.write(line.getBytes());
   for(int i=0;i<vVote.size();i++){
    vTemp=(VotingMB)vVote.elementAt(i);
    line = ("<table width="616" height="202" border="0" cellpadding="0" cellspacing="0" bgcolor="#E5F1FF">  <tr>    <td width="17" height="17" background="lt.jpg"> </td>    <td height="17" colspan="3" background="t.jpg"> </td>    <td width="19" height="17" background="rt.jpg"> </td>  </tr>  <tr>    <td width="17" rowspan="2" background="l.jpg"> </td>    <td width="140" height="140" bgcolor="#E5F1FF"><div align="center"><img src="wssy.JPG" width="141" height="131" /></div></td>    <td colspan="2" bgcolor="#E5F1FF"><div align="left"><p>"
      +vTemp.Code+"<br>");
    fos.write(line.getBytes());
    for(int j=0,k=0,l=0;j<vTemp.Vote.length();j++){
     if(vTemp.ot){
      fos.write(vTemp.Vote.getBytes());
      fos.write("<br>".getBytes());
      break;
     }
     if (vTemp.Vote.charAt(j)=='1') {
      fos.write(ListA[k][l].getBytes());
      fos.write("<br>".getBytes());
      l++;
     }else if(vTemp.Vote.charAt(j)==';') {
      k++;
      l=0;
     }else{
      l++;
     }
    }
    line=("</p>      </div></td>    <td width="19" rowspan="2" background="r.jpg"> </td>  </tr>  <tr>    <td height="28" bgcolor="#E5F1FF"><div align="center">"+vTemp.Name);
    fos.write(line.getBytes());
    line=("</div></td>    <td colspan="2" bgcolor="#E5F1FF"><div align="right">"+(vTemp.fp?"废票 ":" ")+(vTemp.ot?"乱入 ":" ")+vTemp.date+" "+vTemp.time);
    fos.write(line.getBytes());
    fos.write(enter.getBytes());
    line=("</div></td>  </tr>  <tr>    <td width="17" height="17" background="lb.jpg"> </td>    <td height="17" colspan="3" background="b.jpg"> </td>    <td width="17" height="17" background="rb.jpg"> </td>  </tr></table><br>");
    fos.write(line.getBytes());
   }
   line=("总计有CODE:"+tot+"</body></html>");
   fos.write(line.getBytes());
   //dos.close();
   fos.close();
  }
  catch(Exception ex) 
  { 
  }  
  try   
  { 
   int rtmp=0;
   VotingLJ ljtemp,ljtemp1;
   for(int i=0;i<vVote.size();i++){
    vTemp=(VotingMB)vVote.elementAt(i);
    if(!vTemp.fp&&!vTemp.ot){
     sb.delete(0, sb.length());
     int k=0;
     int jj=0;
     for(int l=0;l<vTemp.Vote.length();l++){
      if(vTemp.Vote.charAt(l)==';'){
       k++;
       jj=-1;
      }else if(vTemp.Vote.charAt(l)=='1'){
       rtmp++;
       if(sb.length()!=0){
        sb.append("<br>");
       }
       sb.append(ListA[k][jj]);
      }
      jj++;
     }
     if(vLJ.size()==0){
      ljtemp=new VotingLJ();
      ljtemp.rank=rtmp;
      rtmp=0;
      ljtemp.Name=sb.toString();
      sb.delete(0, sb.length());
      ljtemp.count=1;
      vLJ.addElement(ljtemp);
     }else{
      int l=0;
      for(;;){
       if(l>=vLJ.size()){
        ljtemp=new VotingLJ();
        ljtemp.rank=rtmp;
        rtmp=0;
        ljtemp.Name=sb.toString();
        sb.delete(0, sb.length());
        ljtemp.count=1;
        vLJ.addElement(ljtemp);
        break;
       }else{
        ljtemp=(VotingLJ)vLJ.elementAt(l);
        if(rtmp==ljtemp.rank){
         if(sb.toString().equalsIgnoreCase(ljtemp.Name)){
          ljtemp.count++;
          rtmp=0;
          sb.delete(0, sb.length());
          break;
         }
        }
       }
       l++;
      }
     }
    }
   }
   //   for(int i=0;i<vLJ.size();i++){
   //    ljtemp=(VotingLJ)vLJ.elementAt(i);
   //    System.out.println(ljtemp.Name);
   //    System.out.println(ljtemp.count);
   //   }
   for(int i=0;i<vLJ.size();i++){
    if(i+1<vLJ.size()){
     ljtemp=(VotingLJ)vLJ.elementAt(i);
     ljtemp1=(VotingLJ)vLJ.elementAt(i+1);
     if(ljtemp.count<ljtemp1.count){
      vLJ.insertElementAt(ljtemp1, i);
      vLJ.removeElementAt(i+2);
      i=-1;
     }
    }
   }
   for(int i=0;i<vLJ.size();i++){
    if(i+1<vLJ.size()){
     ljtemp=(VotingLJ)vLJ.elementAt(i);
     ljtemp1=(VotingLJ)vLJ.elementAt(i+1);
     if(ljtemp.rank<ljtemp1.rank){
      vLJ.insertElementAt(ljtemp1, i);
      vLJ.removeElementAt(i+2);
      i=-1;
     }
    }
   }
   file=new File("hulizuiweida/index_5.html");
   if(file.exists()){
    file.delete();
   }
   file=null;
   file=new File("hulizuiweida/index_5.html");
   fos=new FileOutputStream(file);
   //dos=new DataOutputStream(fos);
   try {
    file.createNewFile();
   } catch (IOException e) {
   }
   line = ("<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>狐狸最伟大</title><style type="text/css"><!--body { background-image: url(background.JPG);}--></style></head><body>");
   fos.write(line.getBytes());
   int it=0;
   for(int i=0;i<vLJ.size();i++){
    ljtemp=(VotingLJ)vLJ.elementAt(i);
    if(it!=ljtemp.rank){
     it=ljtemp.rank;
     if(it==1){
      line = ("<p>"+"单投"+"</p>");
      fos.write(line.getBytes());
     }else{
      fos.write(enter.getBytes());
      line = ("<p>"+it+"连记"+"</p>");
      fos.write(line.getBytes());
     }
    }
    line = ("<table width="616" height="202" border="0" cellpadding="0" cellspacing="0" bgcolor="#E5F1FF">  <tr>    <td width="17" height="17" background="lt.jpg"> </td>    <td height="17" colspan="3" background="t.jpg"> </td>    <td width="17" height="17" background="rt.jpg"> </td>  </tr>  <tr>    <td width="17" background="l.jpg"> </td>    <td width="420" bgcolor="#E5F1FF"><div align="center">"+
      ljtemp.Name+
      "</div></td>    <td colspan="2" bgcolor="#E5F1FF"><div align="center">"
      +ljtemp.count+
    "</div></td>    <td width="17" background="r.jpg"> </td>  </tr>    <tr>    <td width="17" height="17" background="lb.jpg"> </td>    <td height="17" colspan="3" background="b.jpg"> </td>    <td width="17" height="17" background="rb.jpg"> </td>  </tr></table>");
    fos.write(line.getBytes());
    fos.write(enter.getBytes());
   }
   fos.write("</body></html>".getBytes());
   //dos.close();
   fos.close();
  }
  catch(Exception ex) 
  { 
  } 
  try   
  { 
   int zmax=0;
   StringBuffer tttemp=new StringBuffer();
   int iz=0;
   int i1=0;
   for(int j=0;j<=2200;j+=10){
    if(j%100>=60){
     j=((j/100)+1)*100;
     if(j>2200){
      break;
     }
    }
    tttemp.append(j);
    tttemp.append('\t');
    //    for(int z1=0;z1<zushu;z1++){
    //     for(int z2=0;z2<meizujueseshu;z2++){
    //       ListC[z1][z2]=0;
    //     }
    //    }
    for(;iz<vVote.size();){
     vTemp=(VotingMB)vVote.elementAt(iz);
     if(vTemp.fp||vTemp.ot){
      iz++;
     }else{
      if(vTemp.time<j){
       for(int z1=0;z1<zushu;z1++){
        for(int z2=0;z2<meizujueseshu;z2++){
         if(vTemp.Vote.charAt(z1*meizujueseshu+z1+z2)=='1'){
          ListC[z1][z2]++;
         }
        }
       }
       iz++;
      }else{
       break;
      }
     }
    }
    for(int z1=0;z1<zushu;z1++){
     for(int z2=0;z2<meizujueseshu;z2++){
      zmax=zmax>ListC[z1][z2]?zmax:ListC[z1][z2];
      ListD[z1*meizujueseshu+z2][i1]=ListC[z1][z2];
      tttemp.append(ListC[z1][z2]);
      tttemp.append('\t');
     }
    }
    tttemp.append(enter);
    i1++;
   }
   int width=560, height=340;
   BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
   Graphics g = image.getGraphics();
   Random random = new Random();
   g.setColor(new Color(0,0,0));
   g.fillRect(0, 0, width, height);
   Image image2 = null;
   try {
    image2 = ImageIO.read(new File("hulizuiweida/wssy.bfx"));
   } catch (IOException e1) {
    e1.printStackTrace();
   } 
   g.drawImage(image2,0,0,null);
   g.setFont(new Font("黑体",Font.PLAIN,18));
   String sRand="狐狸最伟大";
   g.setColor(getRandColor(160,200));
   for (int i=0;i<25;i++) {
    int x = random.nextInt(width)-25;
    int y = random.nextInt(height);
    g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
    g.drawString(sRand,x,y);
   }
   g.setColor(new Color(255,255,255,220));
   g.fillRect(0, 0, width, height);
   g.setColor(new Color(0,0,0));
   g.drawRect(0,0,width-1,height-1);
   g.setColor(new Color(150,150,150));
   g.drawLine(40, 10, 40, 322);
   g.drawLine(41, 10, 41, 322);
   g.drawLine(38, 320, 550, 320);
   g.drawLine(38, 321, 550, 321);
   int xMax=(zmax/10)+1;
   g.setFont(new Font("黑体",Font.BOLD,12));
   int naz=0;
   for(int i=0;i<ListA.length;i++){
    for(int j1=0;j1<ListA[i].length;j1++){
     g.setColor(choicColor(naz));
     g.drawLine(55, 22+(naz*15), 75, 22+(naz*15));
     g.drawString(ListA[i][j1], 78, 25+(naz*15));
     naz++;
    }
   }
   for(int i=0;i<=xMax;i++){
    g.setColor(new Color(150,150,150,220));
    g.drawLine(38, ((i*310)/xMax)+10, 550, ((i*310)/xMax)+10);
   }
   int ux=0,uy=0;
   for(int i=0;i<=ListD.length;i++){
    if(i!=0){
     g.drawString(ListA[(i-1)/2][(i-1)%2].substring(2, 3), ux, uy);
    }
    if(i==ListD.length){
     break;
    }
    ux=40;
    uy=320;
    for(int j=0;j<ListD[0].length;j++){
     g.setColor(choicColor(i));
     g.drawLine(ux, uy,((j*510)/133)+40, 320-(ListD[i][j]*310/(xMax*10)));
     uy=320-(ListD[i][j]*310/(xMax*10));
     ux=((j*510)/133)+40;
    }
   }
   for(int i=0;i<=xMax;i++){
    g.setColor(new Color(150,150,150));
    g.drawLine(38, ((i*310)/xMax)+10, 43, ((i*310)/xMax)+10);
    g.setColor(new Color(0,0,0));
    g.drawString(""+(i*10), 15, 324-((i*310)/xMax));
   }
   for(int i=0;i<=22;i++){
    g.setColor(new Color(150,150,150));
    g.drawLine(((i*510)/22)+40, 318, ((i*510)/22)+40,323);
    g.setColor(new Color(0,0,0));
    g.drawString(""+i,i/10>0?((i*510)/22)+34:((i*510)/22)+38,335);
   }
   g.dispose();
   try   
   { 
    file=new File("hulizuiweida/1.jpg");
    if(file.exists()){
     file.delete();
    }
    file=null;
    file=new File("hulizuiweida/1.jpg");
    ImageIO.write(image, "JPEG", file);
   }catch (Exception e) {
    System.out.println(e);
   }
  }
  catch(Exception ex) 
  { 
  }  
  try   
  { 
   System.out.println("输出结果");
   file=new File("hulizuiweida/index_2.html");
   if(file.exists()){
    file.delete();
   }
   file=null;
   file=new File("hulizuiweida/index_2.html");
   fos=new FileOutputStream(file);
   //dos=new DataOutputStream(fos);
   try {
    file.createNewFile();
   } catch (IOException e) {
   }
   line = ("<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>无标题文档</title><style type="text/css"><!--body{ background-image: url(background.JPG);}.STYLE1 {font-family: "微软雅黑"}--></style></head><body><table width="200" border="0" cellpadding="0" cellspacing="0">  <tr>    <td width="560">曲线图</td>  </tr>  <tr>    <td><img src="1.jpg" width="560" height="340" /></td>  </tr></table><p> </p><table width="544" border="1">  <tr>    <td colspan="2">统计结果</td>  </tr>  ");
   fos.write(line.getBytes());
   for(int i=0;i<vVote.size();i++){
    int z=0;
    int w=0;
    vTemp=(VotingMB)vVote.elementAt(i);
    if(!(vTemp.fp||vTemp.ot)){
     for(int j=0;j<vTemp.Vote.length();j++){
      if(vTemp.Vote.charAt(j)==';'){
       z++;
       w=0;
      }else if(vTemp.Vote.charAt(j)=='1'){
       ListB[z][w]++;
       w++;
      }else if(vTemp.Vote.charAt(j)=='0'){
       w++;
      }
     }
    }
   }
   String tstemp;
   int sttemp;
   for(int l=0;l<ListA.length;l++){
    for(int i=0;i<ListA[0].length;i++){
     if(i+1<ListA[0].length){
      if(ListB[l][i]<ListB[l][i+1]){
       tstemp=ListA[l][i];
       ListA[l][i]=ListA[l][i+1];
       ListA[l][i+1]=tstemp;
       sttemp=ListB[l][i];
       ListB[l][i]=ListB[l][i+1];
       ListB[l][i+1]=sttemp;
       i=-1;
      }
     }
    }
   }
   for(int l=0;l<ListA.length;l++){
    line=("<tr>    <td colspan="2">第"+(l+1)+"组"+"</td>  </tr>  <tr>    <td>角色名</td>    <td>得票数</td>  </tr>");
    fos.write(line.getBytes());
    for(int j=0;j<ListA[0].length;j++){
     line=("  <tr>    <td width="450">");
     fos.write(line.getBytes());
     fos.write(ListA[l][j].getBytes());
     line=("</td>    <td width="150">");
     fos.write(line.getBytes());
     fos.write(Integer.toString(ListB[l][j]).getBytes());
     line=("</td>  </tr>");
     fos.write(line.getBytes());
    }
   }
   line=("<tr>  <td colspan="2"><div align="right">Total:"+tot+"</div></td>  </tr></table><p> </p></body></html>");
   fos.write(line.getBytes());
   //dos.close();
   fos.close();
  }
  catch(Exception ex) 
  { 
  } 
  try   
  { 
   file=new File("hulizuiweida/index_3.html");
   if(file.exists()){
    file.delete();
   }
   file=null;
   file=new File("hulizuiweida/index_3.html");
   fos=new FileOutputStream(file);
   try {
    file.createNewFile();
   } catch (IOException e) {
   }
   //dos=new DataOutputStream(fos);
   line = ("<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>乱入-狐狸最伟大</title><style type="text/css"><!--body { background-image: url(background.JPG);}--></style></head><body>");
   fos.write(line.getBytes());
   for(int i=0;i<vVote.size();i++){
    vTemp=(VotingMB)vVote.elementAt(i);
    if(vTemp.ot){
     line = ("<table width="616" height="202" border="0" cellpadding="0" cellspacing="0" bgcolor="#E5F1FF">  <tr>    <td width="17" height="17" background="lt.jpg"> </td>    <td height="17" colspan="3" background="t.jpg"> </td>    <td width="17" height="17" background="rt.jpg"> </td>  </tr>  <tr>    <td width="17" rowspan="2" background="l.jpg"> </td>    <td width="140" height="140" bgcolor="#E5F1FF"><div align="center"><img src="wssy.JPG" width="141" height="131" /></div></td>    <td colspan="2" bgcolor="#E5F1FF"><div align="left">"+vTemp.Vote);
     fos.write(line.getBytes());
     line=("</div></td>    <td width="17" rowspan="2" background="r.jpg"> </td>  </tr>      <tr>    <td height="28" bgcolor="#E5F1FF"><div align="center">"+vTemp.Name);
     fos.write(line.getBytes());
     fos.write(enter.getBytes());
     line=("</div></td>    <td colspan="2" bgcolor="#E5F1FF"><div align="right">"+vTemp.date+" "+vTemp.time);
     fos.write(line.getBytes());
     line=("</div></td>  </tr>    <tr>    <td width="17" height="17" background="lb.jpg"> </td>    <td height="17" colspan="3" background="b.jpg"> </td>    <td width="17" height="17" background="rb.jpg"> </td>  </tr></table>");
     fos.write(line.getBytes());
     fos.write(enter.getBytes());
     fos.write(enter.getBytes());
    }
   }
   line=("</body></html>");
   fos.write(line.getBytes());
   fos.close();
  }
  catch(Exception ex) 
  { 
  }
}
Color getRandColor(int fc,int bc){//给定范围获得随机颜色
  Random random = new Random();
  if(fc>255) fc=255;
  if(bc>255) bc=255;
  int r=fc+random.nextInt(bc-fc);
  int g=fc+random.nextInt(bc-fc);
  int b=fc+random.nextInt(bc-fc);
  return new Color(r,g,b);
}
Color choicColor(int i){//给定范围获得随机颜色
  switch (i) {
  case 0:
   return new Color(255,0,0);
  case 1:
   return new Color(0,255,0);
  case 2:
   return new Color(0,0,255);
  case 3:
   return new Color(80,80,0);
  case 4:
   return new Color(0,80,80);
  case 5:
   return new Color(80,0,80);
  case 6:
   return new Color(180,0,180);
  case 7:
   return new Color(180,180,0);
  case 8:
   return new Color(0,180,180);
  case 9:
   return new Color(0,0,0);
  default:
   Random random = new Random();
   int r=random.nextInt(255);
   int g=random.nextInt(255);
   int b=random.nextInt(255);
   return new Color(r,g,b);
  }
}
public String getAppPath(Class cls){
  //检查用户传入的参数是否为空
  if(cls==null) 
   throw new java.lang.IllegalArgumentException("参数不能为空!");
  ClassLoader loader=cls.getClassLoader();
  //获得类的全名,包括包名
  String clsName=cls.getName()+".class";
  //获得传入参数所在的包
  Package pack=cls.getPackage();
  String path="";
  //如果不是匿名包,将包名转化为路径
  if(pack!=null){
   String packName=pack.getName();
   //此处简单判定是否是Java基础类库,防止用户传入JDK内置的类库
   if(packName.startsWith("java.")||packName.startsWith("javax.")) 
    throw new java.lang.IllegalArgumentException("不要传送系统类!");
   //在类的名称中,去掉包名的部分,获得类的文件名
   clsName=clsName.substring(packName.length()+1);
   //判定包名是否是简单包名,如果是,则直接将包名转换为路径,
   if(packName.indexOf(".")<0) path=packName+"/";
   else{//否则按照包名的组成部分,将包名转换为路径
    int start=0,end=0;
    end=packName.indexOf(".");
    while(end!=-1){
     path=path+packName.substring(start,end)+"/";
     start=end+1;
     end=packName.indexOf(".",start);
    }
    path=path+packName.substring(start)+"/";
   }
  }
  //调用ClassLoader的getResource方法,传入包含路径信息的类文件名
  java.net.URL url =loader.getResource(path+clsName);
  //从URL对象中获取路径信息
  String realPath=url.getPath();
  //去掉路径信息中的协议名"file:"
  int pos=realPath.indexOf("file:");
  if(pos>-1) realPath=realPath.substring(pos+5);
  //去掉路径信息最后包含类文件信息的部分,得到类所在的路径
  pos=realPath.indexOf(path+clsName);
  realPath=realPath.substring(0,pos-1);
  //如果类文件被打包到JAR等文件中时,去掉对应的JAR等打包文件名
  if(realPath.endsWith("!"))
   realPath=realPath.substring(0,realPath.lastIndexOf("/"));
  /*------------------------------------------------------------
       ClassLoader的getResource方法使用了utf-8对路径信息进行了编码,当路径
        中存在中文和空格时,他会对这些字符进行转换,这样,得到的往往不是我们想要
        的真实路径,在此,调用了URLDecoder的decode方法进行解码,以便得到原始的
        中文及空格路径
      -------------------------------------------------------------*/
  try{
   realPath=java.net.URLDecoder.decode(realPath,"utf-8");
  }catch(Exception e){throw new RuntimeException(e);}
  return realPath;
}//getAppPath定义结束
//-----------------------------------------------------------------
}
 | 
 |