我有一个用 Java 编写的代码,可以显示 PC 上所有已安装的程序。但由于某种原因,在这行之后,程序运行时间比平常长了 25 秒。
sb.append(reader.lines().collect(Collectors.joining("\n")));
代码本身:
class InstalledPrograms {
public static String getPrograms() {
StringBuilder sb = new StringBuilder();
try {
ProcessBuilder processBuilder = new ProcessBuilder(getCommand().split(" "));
Process process = processBuilder.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
sb.append(reader.lines().collect(Collectors.joining("\n")));
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString();
}
private static String getCommand() {
String os = System.getProperty("os.name").toLowerCase();
if (os.contains("window"))
return "wmic product get name,version";
if (os.contains("linux"))
return "dpkg --list";
return "pkgutil --pkgs"; // for MacOS
}
}
我尝试使用 ProcessBuilder - 它没有帮助。我尝试使用 toString() 来避免遍历每个元素 - 它也没有帮助。
public static String getPrograms() {
StringWriter sw = new StringWriter();
try {
ProcessBuilder processBuilder = new ProcessBuilder(getCommand().split(" "));
Process process = processBuilder.redirectErrorStream(true).start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
reader.transferTo(sw);
} catch (Exception e) {
e.printStackTrace();
}
return sw.toString();
}
a2ps安装 适时安装 账户服务安装 acl安装 ACPI安装 acpi-fakekey 安装 ... 输出: zlib1g:amd64 安装 zlib1g:i386 安装 zlib1g-dev:amd64 安装 缩放安装 zsh 安装 zsh-通用安装 真实0m0.228s 用户0m0.286s 系统0m0.086s