有没有办法找到运行我的 Java 程序的控制台的宽度?
如果可能的话,我希望这是跨平台的......
我不想更改缓冲区或窗口的宽度,我只想知道它的宽度,以便正确格式化正在打印到屏幕上的文本。
最佳答案
没有针对此问题的可靠跨平台解决方案。确实,在某些情况下无法知道真正的控制台宽度是多少。
(请参阅其他答案以了解在某些时间和/或在某些平台上有效的方法。但请注意限制...)
例如,在 Linux 系统上,您通常可以从 LINES 和 COLUMNS 环境变量中找出名义终端尺寸。当您调整某些“终端仿真器”窗口的大小时,这些变量会自动更新,但情况并非总是如此。实际上,在通过 telnet 协议(protocol)连接的远程控制台的情况下,无法将实际终端尺寸获取到用户的 shell。
编辑:只是补充一点,如果用户在启动 Java 应用程序后在 Linux 上更改了他/她的 xterm 的尺寸,Java 应用程序将不会收到通知,也不会看到新维度反射(reflect)在其 LINES
和 COLUMNS
环境变量的副本中!
EDIT 2:我的错误:LINES
和 COLUMNS
是 bash
shell 变量,它们没有被导出默认为环境。您可以通过在运行 Java 应用程序之前运行 export COLUMNS LINES
来“修复”此问题。
关于java - 我可以用 Java 找到控制台宽度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1286461/