Предварительное заполнение ввода в консоли Java - PullRequest
0 голосов
/ 22 июня 2010

Я делаю консольное приложение Java / Groovy, которое выполняет много операций поиска / замены в текстовых файлах. Если, скажем, программа знает, что вы заменили foo на bar в прошлый раз, то по умолчанию она должна знать, что вы, вероятно, также хотите заменить следующую foo на bar. Моя идея состояла в том, чтобы предварительно заполнить поле ввода приглашения What would you like to rename this to?, чтобы вам не приходилось перепечатывать его без необходимости, но я не могу найти простой способ сделать это в Java.

Возможно ли это, и если да, то будет ли это рекомендуемой практикой?

Ответы [ 2 ]

2 голосов
/ 22 июня 2010

Почему бы вам просто не предположить, что пустой ввод равен последнему введенному вводу?Было бы намного проще управлять этим предварительным заполнением stdin ..

в любом случае, если вы планируете иметь недавний список, я бы предложил вам использовать специальную комбинацию символов, чтобы сообщить последнему илипредыдущий и т. д.

1 голос
/ 22 июня 2010

Есть много полезных подходов к этой проблеме. Вы можете запомнить только последнее значение, которое пользователь заменил, или вы можете хранить кэш с последними n заменами, если пользователь запрашивает аналогичную замену. Или вы можете проигнорировать предыдущий ввод и заставить пользователя предоставлять замену каждый раз, когда вам нужно. Правильный подход зависит от частоты операций замены, если пользователь заменяет одно и то же значение очень часто и т. Д. Вы должны выбрать правильное решение в зависимости от предметной области и типа взаимодействия, которое вы хотите предоставить пользователю.

Реализация этих решений проста. Наиболее интуитивно понятным является сохранение кеша замены в простом текстовом файле, загрузка его во время запуска и сохранение кеша при завершении работы. Кэш-память замены также может быть сериализована в файл, а не записана в виде простого текста.

...