2016-10-21 5 views
-2

Я работаю над проектом на Java, где я должен позволить пользователю привести аргументы командной строки в нечто подобное, как в UNIX, для выполнения определенных функций.Параметры командной строки в Java

например, если мое имя программы foo.java:

//So when I compile it 
javac foo.java <Enter> 
//Run it 
java foo   <Enter> 
//Input Argument 
list    <Enter> 
<List of all the users> 

Я знаю, что мы можем передать аргументы командной строки с Foo списком Java, например, Java, но если я не должен пройти командную строку аргумент и должен передать аргументы как команду оболочки Unix. Любой пример поможет!

Благодаря

+1

Я понятия не имею, что ваш вопрос. – John3136

+0

Вы вводите в заблуждение аргументы командной строки с пользовательским вводом во время запуска вашей программы? –

+0

by ** list ** Вы имеете в виду выполнение ** java foo list ** и вывод списка? –

ответ

1

Это звучит, как вы хотите, чтобы быть в состоянии дать вход через трубу, как

echo arg1 arg2 arg3 | java foo 

Чтобы сделать это, ваша программа должна читать стандартный ввод. Обычно это выполняется с помощью класса Scanner.

Вот краткий пример:

import java.util.Scanner; 

public class ScannerTest { 
    public static void main(String[] args) { 
    Scanner console = new Scanner(System.in); 
    String input = console.nextLine(); 
    System.out.println(input); 
    } 
} 

Вызов с java ScannerTest будет ждать до тех пор, пока пользователь не вводит строку и вернуть хиты. Вызов с echo "Hello, world!" | java ScannerTest завершается практически сразу, потому что вместо того, чтобы использовать клавиатуру в качестве стандартного ввода, Java рассматривает канал как стандартный ввод.

0

Я считаю, что вы хотите создать приложение java командной строки, которое работает аналогично программам linux.

Я думаю, что хороший вариант - использовать библиотеку https://argparse4j.github.io/. Вы можете посмотреть в их образцы, поскольку его вполне интуитивно:

ArgumentParser parser = ArgumentParsers.newArgumentParser("Checksum") 
        .defaultHelp(true) 
        .description("Calculate checksum of given files."); 
      parser.addArgument("-t", "--type") 
        .choices("SHA-256", "SHA-512", "SHA1").setDefault("SHA-256") 
        .help("Specify hash function to use"); 
      parser.addArgument("file").nargs("*") 
        .help("File to calculate checksum"); 
Namespace ns = null; 
     try { 
      ns = parser.parseArgs(args); 
     } catch (ArgumentParserException e) { 
      parser.handleError(e); 
      System.exit(1); 
     } 

Тогда вы можете назвать как: $ ява Контрольная сумма -h