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/