Чтобы быть ясным: этот вопрос касается не того, как разбирать аргументы в программе, как commons CLI/JCommando и т. Д.Напишите java-команды unix с библиотеками
Я хотел бы написать команды Unix с помощью Java. Хотя я не хочу писать большую часть материала сам, я намереваюсь использовать библиотеки и искать вашу помощь для этого.
Я нашел commons cli для аргументов parse, например getopt. Однако я ищу последнюю библиотеку, которая работает как оператор алмаза Перла или файловая библиотека Python.
Как unix-команды (или команды GNU, когда я прихожу из Linux) работает, так это то, что после анализа всех флагов все оставшиеся аргументы считаются файлами. Затем команда перебирает эти файлы по строкам, файл по файлу. Даблс dubble (например, git checkout - myfile.txt) заключается в том, чтобы отделить имена файлов от аргументов. Если после разбора всех аргументов не осталось аргументов, программа вместо этого должна читать из стандарта.
Это то, что оператор алмазов в Perl делает, а также библиотеки FileInput Пайтона, на очень очень несколько строк:
Perl
@ARGV = ("diamond.pl", "stdin.pl");
while (<>) {
print();
}
Python
import fileinput
for line in fileinput.input():
process(line)
Есть ли библиотека в Java что делает то, что они делают так же просто, как они это делают (библиотека, которая в основном имеет тот же API, что и https://docs.python.org/2/library/fileinput.html)? Я не хочу сам писать материал (искать аргументы, если не цитировать через stdin, иначе загружать каждый файл, желательно ленив, кормить каждую строку командой и т. Д.) ... Мне просто нужен бизнес-конец, цикл вроде:
Моя идея
LineIterator li = new MagicTextLineFeeder(remainingAfterCommonsCliParsing);
for (String line : li.nextRow()) {
System.out.println(line);
}
EDIT: Сделано ясно, что я не искал другой аргумент разборе библиотеки.
Для линейного чтения посмотрите на BufferedReader.readLine(). Для синтаксического анализа аргументов командной строки сверните свой собственный или выполните поиск «парсер синтаксиса java» – Arkadiy
Существует гораздо больше библиотек, связанных с cli, чем apache. Возможно, что-то в http://stackoverflow.com/questions/1200054/java-library-for-parsing-command-line-parameters? Но почему вы не используете perl или python? Java работает нормально, но это просто не так хорошо, как все остальные. – zapl
Я не знаю, был ли я недостаточно ясен, но этот пост не посвящен анализу аргументов. Как вы говорите, для этого есть множество библиотек. Речь идет о шаге после этого, перемещая имена файлов влево и подавая программе содержимое файлов. Я хотел бы найти библиотеку с той же функциональностью, что и Python fileinput. Прочтите https://docs.python.org/2/library/fileinput.html Arkadiy: Вопрос в том, есть ли библиотека вместо того, чтобы кататься самостоятельно. Я знаю, что могу использовать BufferedReader. zapl: Конечно, я могу использовать Python или Perl, но я спрашиваю, есть ли библиотека для Java и НЕ писать мои собственные. – Aquaplanet