版本號比較
/**
* 如果版本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();
}