java - 命令行参数丢失?

标签 java command-line-arguments

我正在编写一个 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被 shell 解释为输入重定向。 March.csv的内容被发送到程序的标准输入,您将忽略它。这发生在 shell 中,甚至在 Java 程序启动之前。所以,只有February.csv正在作为命令行参数发送到 main .

删除 < ,以便您打算发送到 main 的所有命令行参数已发送。

关于java - 命令行参数丢失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29663120/

相关文章:

hadoop - 我们可以在 GenericOptionsParser 中使用 -D 选项设置多个通用参数吗?

powershell - 脚本参数匹配

c++ - MSVC++ 中源字符集编码规范,如 gcc "-finput-charset=CharSet"

java - 如何阅读下载文本中的中断?

java - Jackson注释转换BigDecimal值并将比例设置为2

java - 如何从 Apache 服务器日志中解析 IP 地址?

java - 用于 Android 应用程序的 Python

Java 命令行参数。使用 * 作为乘法的参数

unit-testing - Go 单元测试中的自定义命令行标志

java - 让 Maven 运行所有测试,即使有些测试失败