从命令行通过stdin到达Java应用程序

时间:2014-12-19 17:20:16

标签: java command-line

我用Java编写了一个实用程序,用于过滤JSON输入,从文件或从stdin到XML。虽然我已经把它变成了一个独立的,可运行的JAR,但我还是迷失了如何通过stdin将输入重定向到它。例如:

cat sample.json | java -jar ./target/json-to-xml-1.0.0.jar

此命令行不起作用;我想知道这是否可以做到。

  private static String readContentFromStdIn() throws IOException
  {
    char ch;
    StringBuilder sb = new StringBuilder();
    PipedInputStream input = new PipedInputStream();

    while( ( ch = ( char ) input.read() ) != -1 )
      sb.append( ch );

    input.close();

    return sb.toString();
  }

1 个答案:

答案 0 :(得分:1)

您的代码正在创建一个PipedInputStream,它没有连接到任何东西,也永远不会获得任何数据。对于从stdin读取,您不需要创建新流;你应该从System.in中读取。