繁体   English   中英

命令行参数丢失了吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM