Некоторые операционные системы (как z/OS) производят "файл стороны", который содержит отладочные символы. Это помогает постараться не чрезмерно увеличивать размер исполняемого файла с дополнительной информацией.
Не существует надежных кроссплатформенных решений этой проблемы. Действительно, бывают ситуации, когда невозможно узнать реальную ширину консоли.
Например, в системе Linux условные размеры терминала обычно можно узнать из переменных среды LINES и COLUMNS. Хотя эти переменные автоматически обновляются при изменении размера некоторых окон «эмулятора терминала», это не всегда так. Действительно, в случае удаленной консоли, подключенной по протоколу telnet, нет способа получить фактические размеры терминала в оболочке пользователя.
РЕДАКТИРОВАТЬ : просто добавить, что, если пользователь изменяет размеры своего / ее xterm в Linux после запуска приложения Java приложение Java не получит уведомления, и оно выиграет ' Я не вижу новых измерений, отраженных в его копии переменных окружения LINES и COLUMNS!
РЕДАКТИРОВАТЬ 2 : Моя ошибка, это переменные оболочки bash
, но по умолчанию они не экспортируются в среду. Вы можете "исправить" это, запустив export COLUMNS LINES
перед запуском приложения Java.
В Java 6 есть класс java.io.Console, но, к сожалению, в нем отсутствуют требуемые функции. Получить ширину окна консоли невозможно с помощью стандартной библиотеки Java и чистой кроссплатформенной Java.
Вот альтернативная консольная библиотека Java , которая позволяет получить размер экрана, но включает DLL для Windows. Вы могли бы взять исходный код и скомпилировать часть C в общую библиотеку Linux или Mac OS X, чтобы она также работала на этих платформах.