通过终端将 cat 输出传送到 Java jar 中

问题描述 投票:0回答:1

我有一个需要使用标准输入的 JAR 文件。我需要使用这个命令并且无法更改它:

cat filename | java -jar jarname.jar

我希望 JAR 能够以某种方式访问它,最简单的方法是通过

String[] args
。问题是
cat filename
的结果没有出现在
String[] args
中,或者以任何方式供我使用它。我已经尝试搜索此内容一段时间了,但我得到的只是有关使用管道将 java 输出写入文件的问题。

java jar pipe
1个回答
0
投票

最简单的方式通过

String[] args

不可能。

该文件将以

System.in
形式提供。

这是一个简单的程序,可以直接打印 sysin,并直观地添加行号。

cat
有额外的步骤。现在您知道如何使用 System.in 了。请注意,如果 System.in 包含基于字节的数据,显然不要将其包装在读取器中(用于基于字符的数据)。只需直接从中读取字节即可。

> cat Test.java
import java.io.*;

class Test {
  public static void main(String[] args) throws Exception {
    var in = new BufferedReader(new InputStreamReader(System.in));
    int lineNum = 1;
    while (true) {
      String line = in.readLine();
      if (line == null) break;
      System.out.printf("%6d. %s\n", lineNum++, line);
    }
  }
}

> cat hello.txt
Hello!
World!
> cat hello.txt | java Test.java
     1. Hello!
     2. World!
© www.soinside.com 2019 - 2024. All rights reserved.