从命令行通过stdin访问Java应用程序
我用Java编写了一个实用程序,它可以将JSON输入从文件或stdin过滤为XML。虽然我已经使它成为一个独立的、可运行的JAR,但我不知道如何通过stdin将输入重定向到它。例如:从命令行通过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
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,现在它可以工作了。