實用的工具類

版本號比較

/**
     * 如果版本1 大於 版本2 返回true 否則返回fasle 支持 2.2 2.2.1 比較
     * 支持不同位數的比較  2.0.0.0.0.1  2.0 對比
     *
     * @param v1 版本服務器版本 " 1.1.2 "
     * @param v2 版本 當前版本 " 1.2.1 "
     * @return ture :需要更新 false : 不需要更新
     */
    public static boolean compareVersions(String v1, String v2) {
        //判斷是否爲空數據
        String[] str1 = v1.split("\\.");
        String[] str2 = v2.split("\\.");

        if (str1.length == str2.length) {
            for (int i = 0; i < str1.length; i++) {
                if (Integer.parseInt(str1[i]) > Integer.parseInt(str2[i])) {
                    return true;
                } else if (Integer.parseInt(str1[i]) < Integer.parseInt(str2[i])) {
                    return false;
                } else if (Integer.parseInt(str1[i]) == Integer.parseInt(str2[i])) {

                }
            }
        } else {
            if (str1.length > str2.length) {
                for (int i = 0; i < str2.length; i++) {
                    if (Integer.parseInt(str1[i]) > Integer.parseInt(str2[i])) {
                        return true;
                    } else if (Integer.parseInt(str1[i]) < Integer.parseInt(str2[i])) {
                        return false;

                    } else if (Integer.parseInt(str1[i]) == Integer.parseInt(str2[i])) {
                        if (str2.length == 1) {
                            continue;
                        }
                        if (i == str2.length - 1) {
                            for (int j = i; j < str1.length; j++) {
                                if (Integer.parseInt(str1[j]) != 0) {
                                    return true;
                                }
                                if (j == str1.length - 1) {
                                    return false;
                                }
                            }
                            return true;
                        }
                    }
                }
            } else {
                for (int i = 0; i < str1.length; i++) {
                    if (Integer.parseInt(str1[i]) > Integer.parseInt(str2[i])) {
                        return true;
                    } else if (Integer.parseInt(str1[i]) < Integer.parseInt(str2[i])) {
                        return false;

                    } else if (Integer.parseInt(str1[i]) == Integer.parseInt(str2[i])) {
                        if (str1.length == 1) {
                            continue;
                        }
                        if (i == str1.length - 1) {
                            return false;
                        }
                    }
                }
            }
        }
        return false;
    }

從jar包中刪除指定文件

        List<String> deleteList = new ArrayList<>();
        deleteList.add("com/chivox/AIEngine.class");
        deleteList.add("com/chivox/AIEngine$a.class");
        deleteList.add("com/chivox/AIEngine$aiengine_callback.class");
        try {  delete("/Users/xuyan/Desktop/chivox_android_sdk_release.jar",deleteList);
        } catch (Exception e) {
            e.printStackTrace();
        }

    private static void delete(String jarName, List<String> deletes) throws Exception {
        //先備份
        File oriFile = new File(jarName);
        if (!oriFile.exists()) {
            System.out.println("######Not Find File:" + jarName);
            return;
        }
        //將文件名命名成備份文件
        String bakJarName = jarName.substring(0, jarName.length() - 3) +System.currentTimeMillis() + ".jar";
        File bakFile = new File(bakJarName);
        boolean isOK = oriFile.renameTo(bakFile);
        if (!isOK) {
            System.out.println("######Remame ERR..........");
            return;
        }
        //創建文件(根據備份文件並刪除部分)
        JarFile bakJarFile = new JarFile(bakJarName);
        JarOutputStream jos = new JarOutputStream(new FileOutputStream(jarName));
        Enumeration<JarEntry> entries = bakJarFile.entries();
        while (entries.hasMoreElements()) {
            JarEntry entry = entries.nextElement();
            System.out.println(entry.toString());
            if (!deletes.contains(entry.getName())) {
                InputStream inputStream = bakJarFile.getInputStream(entry);
                jos.putNextEntry(entry);
                byte[] bytes = readStream(inputStream);
                jos.write(bytes, 0, bytes.length);
            }
            else {
                System.out.println("Delete:-------" + entry.getName());
            }
        }
        jos.flush();
        jos.finish();
        jos.close();
        bakJarFile.close();
    }
    private static byte[] readStream(InputStream inStream) throws Exception {
        ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len = -1;
        while ((len = inStream.read(buffer)) != -1) {
            outSteam.write(buffer, 0, len);
        }
        outSteam.close();
        inStream.close();
        return outSteam.toByteArray();
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章