[英]Command-Line Arguments Being Lost?
我正在编写一个Java程序来清理一些数据。
我正在将需要的文件传递给它,但是第一个文件将被忽略!
重现该问题的最低代码:
public class Classifier {
public static void main(String[] args) throws IOException {
System.out.println(args[0]);
for (String s : args) {
System.out.println(s);
}
}
}
我使用以下命令行参数运行它:
java Classifier < March.csv February.csv
我收到的输出是:
February.csv February.csv
有人可以解释为什么吗?
< March.csv
将< March.csv
解释为输入重定向。 March.csv
的内容将发送到程序的标准输入中,您将忽略该输入。 这甚至在Java程序启动之前就在Shell中发生。 因此,只有February.csv
作为命令行参数发送到main
。
删除该<
,以便发送您要发送给main
所有命令行参数。
<
运算符将此文件重定向到该stdin到此Java进程
所以
如果你有
java Classifier < March.csv
并尝试读取参数,您将看不到任何参数,如果您读取标准输入,则将读取文件内容
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.