【发布时间】:2013-10-15 15:48:57
【问题描述】:
我正在开发一款游戏,该游戏涉及在每次转弯后清除屏幕以提高可读性。唯一的问题是我不能使用基于 Windows 命令提示符的“cls”命令,而且它不支持 ANSI 转义字符。我在下一页使用了 Dyndrilliac 的解决方案,但它导致了 IOException:
用“cmd \C cls”替换“cls”只会打开一个新的命令提示符,清除它,然后关闭它,而不访问当前控制台。如何使通过 Windows 命令提示符运行的 Java 程序访问命令提示符的参数并使用它们来清除其输出?
【问题讨论】:
-
在 C 中,
system("cls");为我工作。但是当我尝试 Java 解决方案时,我也会遇到异常;我认为原因是没有名为cls.exe的可执行文件。所以这意味着system()一定在做一些特别的事情,但我不知道是什么。可能需要深入研究 C 库源代码才能弄清楚它是如何工作的。 -
顺便说一句,我不明白你为什么要提到“命令提示符的参数”。这与清除控制台有何关系?
-
@ajb CLS 实际上是一个 Windows 命令提示符参数,而不是它自己的进程。它旨在在使用时清除 Windows 控制台,但不执行任何特定程序。因此,执行 "Runtime.getRuntime().exec("cls") 实际上会尝试执行一个名为 "cls" 的程序,而不是将参数发送到控制台。
-
"cls" 是 Windows 命令提示符 command,而不是参数。参数是您提供给命令或程序的额外信息;如果你运行
java JavaProgram file1 file2,那么file1和file2是参数(并且将是主程序作为参数获取的String[])。术语上的错误让我很困惑。 -
仍然会发生错误,因为它在您使用 Runtime.getRuntime().exec("cls") 时尝试运行进程。
标签: java console command-line-arguments windows-console