import java.util.Locale;
/**
* 系统名称架构工具类
* 可直接引用使用
* 例如:
* String name = OSUtils.OPERATING_SYSTEM_NAME.name()
* String arch = OSUtils.OPERATING_SYSTEM_ARCH
*/
public class OSUtils {
/**
* 系统名称
*/
private final static PlatformEnum OPERATING_SYSTEM_NAME;
/**
* 系统架构
*/
private final static String OPERATING_SYSTEM_ARCH;
/**
* 标准化处理,提出字符串中非a-z0-9的字符
* @param value
* @return
*/
private static String normalize(String value) {
return value == null ? "" : value.toLowerCase(Locale.US).replaceAll("[^a-z0-9]+", "");
}
/**
* 标准化处理,返回系统架构的标准化字符串
* @param value
* @return
*/
private static String normalizeArch(String value) {
value = normalize(value);
if (value.matches("^(x8664|amd64|ia32e|em64t|x64)$")) {
return "x86_64";
} else if (value.matches("^(x8632|x86|i[3-6]86|ia32|x32)$")) {
return "x86_32";
} else if (value.matches("^(ia64w?|itanium64)$")) {
return "itanium_64";
} else if ("ia64n".equals(value)) {
return "itanium_32";
} else if (value.matches("^(sparc|sparc32)$")) {
return "sparc_32";
} else if (value.matches("^(sparcv9|sparc64)$")) {
return "sparc_64";
} else if (value.matches("^(arm|arm32)$")) {
return "arm_32";
} else if ("aarch64".equals(value)) {
return "aarch_64";
} else if (value.matches("^(mips|mips32)$")) {
return "mips_32";
} else if (value.matches("^(mipsel|mips32el)$")) {
return "mipsel_32";
} else if ("mips64".equals(value)) {
return "mips_64";
} else if ("mips64el".equals(value)) {
return "mipsel_64";
} else if (value.matches("^(ppc|ppc32)$")) {
return "ppc_32";
} else if (value.matches("^(ppcle|ppc32le)$")) {
return "ppcle_32";
} else if ("ppc64".equals(value)) {
return "ppc_64";
} else if ("ppc64le".equals(value)) {
return "ppcle_64";
} else if ("s390".equals(value)) {
return "s390_32";
} else {
return "s390x".equals(value) ? "s390_64" : value;
}
}
/**
* 初始化执行,获取系统名称和系统架构,做final变量赋值,可直接引用
*/
static {
String name = System.getProperty("os.name").toLowerCase(Locale.ENGLISH);
String arch = System.getProperty("os.arch").toLowerCase(Locale.ENGLISH);
if (name.startsWith("linux")) {
OPERATING_SYSTEM_NAME = PlatformEnum.LINUX;
} else if (!name.startsWith("mac") && !name.startsWith("darwin")) {
if (name.startsWith("windows")) {
OPERATING_SYSTEM_NAME = PlatformEnum.WINDOWS;
} else {
OPERATING_SYSTEM_NAME = PlatformEnum.UNKNOWN;
}
} else {
OPERATING_SYSTEM_NAME = PlatformEnum.MACOSX;
}
OPERATING_SYSTEM_ARCH = normalizeArch(arch);
}
/**
* 系统名称枚举
*/
public enum PlatformEnum {
WINDOWS,
LINUX,
MACOSX,
UNKNOWN;
}
public static void main(String[] args) {
System.out.println(OSUtils.OPERATING_SYSTEM_NAME.name());
System.out.println(OSUtils.OPERATING_SYSTEM_ARCH);
}
}
工具类(系统名称架构)
于 2023-11-01 11:50:18 首次发布