从命令行通过stdin访问Java应用程序

从命令行通过stdin访问Java应用程序,java,command-line,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 { cha

我用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();
  }

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

中读取数据。您的程序是否成功地从stdin中读取数据?unix命令是正确的,我想您的问题在于代码。你是怎么读到stdin的<代码>系统。在中?(请粘贴相关代码)非常感谢!我采用了Scanner sc=新的Scanner(System.in)来读取stdin,现在它可以工作了。