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

标签 java command-line

我用 Java 编写了一个实用程序,用于将 JSON 输入从文件或标准输入过滤为 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 读取。

关于java - 从命令行通过 stdin 访问 Java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27570885/

相关文章:

regex - Unix egrep 命令如何创建一个模式来匹配以下内容?

php - 如何设置 PHP 命令行的最大调试/日志级别输出?

java - 如何在 Java Swing Gui 中存储用户输入的变量以供进一步使用?

Jenkins Pipeline 中的 PowerShell 环境变量给出 `org.jenkinsci.plugins.workflow.cps.EnvActionImpl@1b69f5bb:VARIABLE_NAME`

java - 使用 Math.random 显示随机数并验证该值是否已附加到 JTextArea

java - 使用 FlowLayout 管理器将 3 个面板保留在不同的行中

windows - 如果抛出错误,如何跳过循环中的迭代?

pdf - 如何在不损失质量的情况下从(Linux)命令行注释 PS 或 PDF?

java - 将图像从文件系统添加到 Jlabel

java - 如何通过检查数组值将数组拆分为不同数组或具有不同键的同一数组