CS结构软件自动升级实现(四)

接CS结构软件自动升级实现(三) :

Config.java处理配置文件:

 1/** *//********************************************************************  2 * 项目名称        :rochoc

  3 * 包名称         :com.rochoc.autoupdate

  4 * 文件名称        :Config.java

  5 * 编写者         :kfzx-luoc

  6 * 编写日期        :2008-12-22

  7 * 程序功能(类)描述  :

  8 * 用于更新的配置文件读取对像  9 * 程序变更日期      :10 * 变更作者        :11 * 变更说明        :12********************************************************************/13package com.rochoc.autoupdate;1415import java.io.File;16import java.text.SimpleDateFormat;17import java.util.Date;18import java.util.List;1920import org.dom4j.Document;21import org.dom4j.Element;22import org.dom4j.io.SAXReader;232425/** *//**26 * @author kfzx-luoc27 *28 * TODO To change the template for this generated type comment go to29 * Window - Preferences - Java - Code Style. - Code Templates30 */31public class Config32{33  public static String cfgFile = ".//config//autoupdate.xml";34  private static Config config = null;35  /** *//** xml的document*/36  private Document doc = null;37  public static Config getInstance()38  {39    if(config==null)40    {41      config = new Config();42    }43    return config;44  }45  46  private Config()47  {48    try49    {50      SAXReader reader = new SAXReader();51      doc = reader.read(cfgFile);52    }catch(Exception e)53    {54      e.printStackTrace();55    }56  }57  public void refresh()58  {59    config = new Config();60  }61  public String getVerstion()62  {63    if(config==null)64    {65      return "";66    }67    List lst = doc.selectNodes("Info/Version");68    Element el = (Element)lst.get(0);69    return el.getText();70  }71  public String getServerIp()72  {73    if(config==null)74    {75      return "";76    }77    List lst = doc.selectNodes("Info/UpdateServer/Ip");78    Element el = (Element)lst.get(0);79    return el.getText();80  }81  public UpdFile [] getFiles()82  {83    if(config==null)84    {85      return null;86    }87    List file = doc.selectNodes("Info/Files");88    List lst = ((Element)file.get(0)).elements();89    if(lst.size()==0)90    {91      return null;92    }93    UpdFile files[] = new UpdFile[lst.size()];94    for(int i=0;i>" );127    String str = sdf.format( new Date());128    System.out.println(str+msg);129  }130  public static void main(String args[])131  {132    Config cfg = Config.getInstance();133    UpdFile files[] = cfg.getFiles();134    for(int i=0;i<files.length;i++)135    {136      System.out.println(files[i]);137    }138    Config.print("test");139  }140  /** *//**141   * 格式化路径,增加其尾部的目录分隔符142   *143   * @param p 要格式化的目录字符串144   */145  public static String formatPath(String p)146  {147    if (!p.endsWith(File.separaTor))148      return (p + File.separaTor);149    return p;150  }151152  /** *//**153   * 格式化路径,去除其尾部的目录分隔符154   *155   * @param p 要格式化的目录字符串156   */157  public static String unformatPath(String p)158  {159    if (p.endsWith(File.separaTor))160      return (p.substring(0, p.length()-1));161    return p;162  }163  public static byte[] getCmd(String cmd)164  {165    //第一位用于标识是命令,后面8位为命令名166    byte cmdb [] = new byte[9];167    cmdb[0] = AUPD.CMD_DATA_SECT;168    byte [] tmp = cmd.getBytes();169    if(tmp.length!=8)170    {171      Config.print("命令有误:"+cmd+"<<");172      return null;173    }174    for(int i=0;i<8;i++)175    {176      cmdb[i+1] = tmp[i];177    }178    return cmdb;179  }180  public static String parseCmd(byte cmd[])181  {182    return new String(cmd,0,8);183  }184  public static byte [] getLen(int len)185  {186    String slen = String.valueOf(len);187    while(slen.length()<4)188    {189      slen = "0"+slen;190    }191    return slen.getBytes();192  }193  public static void copyArray(byte objary[], byte souary[], int o_begin,194      int s_begin, int len)195  {196    for (int i = 0; i < len; i++)197    {198      objary[o_begin + i] = souary[s_begin + i];199    }200  }201}

UpdFile.java:这个类本来是想作为对象直接在服务端和客户端之间传递的,但后来没有采用,因此在本实现中用处不大

1/** *//********************************************************************  2 * 项目名称                :rochoc<p>  3 * 包名称                  :com.rochoc.autoupdate<p>  4 * 文件名称                :UpdFile.java<p>  5 * 编写者                 :kfzx-luoc<p>  6 * 编写日期                :2008-12-23<p>  7 * 程序功能(类)描述    :<p>  8 * 版本文件对像  9 * 程序变更日期            : 10 * 变更作者                : 11 * 变更说明                : 12********************************************************************/ 13package com.rochoc.autoupdate; 14 15import java.io.Serializable; 16 17/** *//** 18 * @author kfzx-luoc 19 * 20 * TODO To change the template for this generated type comment go to 21 * Window - Preferences - Java - Code Style. - Code Templates 22 */ 23public class UpdFile implements Serializable 24{ 25    private String name = "";//名称 26    private String path = "";//路径 27    private int type = 0;//类型 0.文件 1.目录 28    private String version = "";//版本号 29 30    public UpdFile() 31    { 32        super(); 33    } 34    public UpdFile(String name) 35    { 36        this(); 37        this.name = name; 38    } 39    public UpdFile(String name,String path,int type,String version) 40    { 41        this(name); 42        this.path = path; 43        this.type = type; 44        this.version = version; 45    } 46    /** *//** 47     * @return Returns the name. 48     */ 49    public String getName() 50    { 51        return name; 52    } 53    /** *//** 54     * @param name The name to set. 55     */ 56    public void setName(String name) 57    { 58        this.name = name; 59    } 60    /** *//** 61     * @return Returns the path. 62     */ 63    public String getPath() 64    { 65        return path; 66    } 67    /** *//** 68     * @param path The path to set. 69     */ 70    public void setPath(String path) 71    { 72        this.path = path; 73    } 74    /** *//** 75     * @return Returns the type. 76     */ 77    public int getType() 78    { 79        return type; 80    } 81    /** *//** 82     * @param type The type to set. 83     */ 84    public void setType(int type) 85    { 86        this.type = type; 87    } 88    /** *//** 89     * @return Returns the version. 90     */ 91    public String getVersion() 92    { 93        return version; 94    } 95    /** *//** 96     * @param version The version to set. 97     */ 98    public void setVersion(String version) 99    {100        this.version = version;101    }102    public String toString()103    {104        return "Name:"+getName()+",Path:"+getPath()105        +",Type:"+getType()+",Version:"+getVersion();106    }107}

《CS结构软件自动升级实现》已经全部写完,这是本人原创,如果需要转贴请注明出处,谢谢。

让我们从自身的禁锢中放心地飞出去,重新审视自己,

CS结构软件自动升级实现(四)

相关文章:

你感兴趣的文章:

标签云: