Linux中的许多命令采用两种输入方式之一stdin或作为文件的参数。实例
回显“来自stdin的文本”lpr
lpr文件名.txt
回显“来自stdin的文本”nl
NL文件名.txt
awk、sed、grep和其他许多应用程序也是如此。用java编写的命令行应用程序怎么会发生同样的行为?我相信system.in代表stdin。阅读stdin并不困难。从文件中读取并不困难,但是应用程序如何根据在命令行上调用它的方式进行相应的操作呢?

最佳答案

处理main(String[] args)方法的参数。如果提供了参数,args[0]将为非空,因此您可以假定/验证它是一个文件名。否则,假设/验证输入是通过stdin提供的。
代码中:

 public static void main(String[] args) {
  if (args.length > 0) {
       String filename = args[0];
       ... // process the file
  }
  else {
     Scanner sc = new Scanner(System.in);
     ... // process STDIN
   }
 }

关于java - 用Java完成Linux命令输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18456428/

10-16 02:46