static Properties readJarProperty() throws IOException {
currentJarPath = URLDecoder.decode(com.taisys.ota.util.RunMain.class
.getProtectionDomain().getCodeSource().getLocation().getFile(),"UTF-8"); // 获取当前Jar文件名,并对其解码,防止出现中文乱码
System.out.println("currentJarPath=" + currentJarPath);
JarFile currentJar = new JarFile(currentJarPath);
JarEntry dbEntry = currentJar
.getJarEntry("com/taisys/ota/util/jdbc.properties");
InputStream in = currentJar.getInputStream(dbEntry);
Properties p = new Properties();
p.load(in);
in.close();
return p;
}
static void updateJarProperty() throws IOException {
currentJarPath = URLDecoder.decode(com.taisys.ota.util.RunMain.class
.getProtectionDomain().getCodeSource().getLocation().getFile(),"UTF-8"); // 获取当前Jar文件名,并对其解码,防止出现中文乱码
String EntryName = "jdbc.properties";
currentPath = startServer();
byte[] data = null;
File properFile = new File(currentPath + "/jdbc.properties");
if (properFile.exists()) {
InputStream in = new FileInputStream(properFile);
data = getByte(in);
}
try {
JarFile jf = new JarFile(currentJarPath);
TreeMap<String,byte[]> tm = new TreeMap<String,byte[]>();
Enumeration es = jf.entries();
while (es.hasMoreElements()) {
JarEntry je = (JarEntry) es.nextElement();
byte[] b = getByte(jf.getInputStream(je));
tm.put(je.getName(),b);
}
JarOutputStream out = new JarOutputStream(new FileOutputStream(
currentJarPath));
Set set = tm.entrySet();
Iterator it = set.iterator();
boolean has = false;
while (it.hasNext()) {
Map.Entry me = (Map.Entry) it.next();
String name = (String) me.getKey();
JarEntry jeNew = new JarEntry(name);
// System.out.println("jeNew.getName()="+jeNew.getName());
out.putNextEntry(jeNew);
byte[] b;
if (name.equals(EntryName)) {
b = data;
has = true;
} else
b = (byte[]) me.getValue();
out.write(b,b.length);
}
if (!has) {
JarEntry jeNew = new JarEntry(EntryName);
out.putNextEntry(jeNew);
out.write(data,data.length);
}
out.flush();
out.finish();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}