我正在尝试获取与Java中的文件类型关联的exe。我通过启动一个执行assoc的cmd进程并尝试捕获其输出来实现此目的。现在这是哪里出了问题,我得到了以下几行,但没有其他内容:
Microsoft Windows [Version 10.0.17134.648]
(c) 2018 Microsoft Corporation. All rights reserved.
这是我的代码:
String[] commands = {"cmd", "assoc .txt"};
final ProcessBuilder pb = new ProcessBuilder(commands);
Process pr = pb.start();
pr.getOutputStream().close();
BufferedReader errorReader = new BufferedReader(new InputStreamReader(pr.getErrorStream()));
BufferedReader stdIn = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String s;
while((s = stdIn.readLine()) != null) {
System.out.println(s);
}
String error;
while((error = errorReader.readLine()) != null) {
System.out.println(error);
}
答案 0 :(得分:0)
您的问题可能是您使用BufferedReader.readLine()
。这等待换行符,您的进程可能不会发送该换行符。
另外,您在一个线程中运行所有内容,这可能会妨碍您捕获输出。
看看https://examples.javacodegeeks.com/core-java/lang/processbuilder/java-lang-processbuilder-example/