有没有一种简单的方法可以在JAVA中获得Windows操作系统的内部版本(如16299、15063等)?

目前我找到的唯一解决方案是运行外部进程并解析输出:
Runtime runtime = Runtime.getRuntime();
Process process;
BufferedReader bufferedReader;
StringBuilder stringBuilder = new StringBuilder();
String stdOutLine = null;
String windowsVersion = null;
try {
process = runtime.exec("cmd.exe /c ver");
bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
while ((stdOutLine = bufferedReader.readLine()) != null) {
stringBuilder.append(stdOutLine);
}
} catch (IOException ex) {
throw new RuntimeException("Error while getting Windows version");
}
windowsVersion = Arrays.stream(stringBuilder.toString().split("\\."))
.filter(s -> s.length() == 5 && s.matches("[0-9]+"))
.findFirst()
.get();有没有另一种更优雅的方法来获取字符串或提取所需的部分?谢谢。
发布于 2018-06-23 14:19:04
由于Java是独立于平台的,所以它没有API来获取特定于某个平台的信息。
但是,如果您知道如何在C中执行此操作,则可以使用JNI。
https://stackoverflow.com/questions/50998438
复制相似问题