接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结构软件自动升级实现》已经全部写完,这是本人原创,如果需要转贴请注明出处,谢谢。
让我们从自身的禁锢中放心地飞出去,重新审视自己,