- 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();
- }
- }