【发布时间】:2014-07-29 09:37:51
【问题描述】:
只是想知道是否可以通过 java 进程输入流从外部 Jar 重定向控制台消息的原始格式。
我正在调用一个外部 Jar 工具并在控制台上打印出它的消息。 这是我使用的代码:
proc = rt.exec(java -jar External jar with arguments);
String line;
BufferedReader inMsg = new BufferedReader(
new InputStreamReader(proc.getInputStream()));
while ((line = inMsg.readLine()) != null) {
System.out.println(line);
}
in.close();
但是,这个外部 Jar 程序实现了一个进度条来显示文件下载过程,它基本上更新了同一行:
private static void printProgBar(double bytesCopied) {
double percentDone = ((bytesCopied)/(curretnFileSize));
percentDone *= 100;
StringBuilder bar = new StringBuilder("[");
for (int i = 0; i < 50; i++) {
if (i < (percentDone / 2)) {
bar.append("=");
} else if (i == (percentDone / 2)) {
bar.append(">");
} else {
bar.append(" ");
}
}
bar.append("] ").append(df.format(percentDone)).append("% ");
if(percentDone > 1){
System.out.print("\r" + bar.toString());
}
}
输出是这样的:
[======= ] 12.51%
好的,所以当我通过输入流重定向它时,它会在新行上打印百分比的每个变化。我想尊重原始格式。有什么建议,怎么可能。
【问题讨论】:
-
你能修改那个 printProgBar 代码吗?
-
@Pablo:是的,也可以这样做。但不改变功能。任何建议。
标签: java process inputstream