我运行这个有这个运行命令的程序:
gzip -dc file.gz | java driver
有人可以解释一下这是如何工作的(这个file.gz如何传递给java程序)以及如何使用Netbeans来做到这一点。
问候!
答案 0 :(得分:1)
linux中的管道|
可以方便地将程序输出重定向到另一个程序的输入。
例如,假设您正在尝试在当前目录中找到名为java
的文件。然后ls -l
将列出文件,但要执行第二部分,我们可以将此输出传输到grep
,如下所示。
ls -l | grep java
如果不是这样,那么我们必须先将ls -l
的输出保存到文件中,然后使用grep
的文件进行搜索。
您的示例gzip -dc
中也发生了同样的情况。
-d stands for decompress
-c output to the console (not a file)
现在由于gzip输出(二进制输出)被转储到控制台上,我们可以使用管道来提供给Java程序。
在java driver
驱动程序中是一个可执行的JAR文件(在您的情况下没有扩展名.jar
)。 driver
JAR有一个接收命令行参数的main方法。
现在驱动程序的main方法期望二进制内容到它的命令行输入参数(main(String[] args)
,其中args
是命令行参数数组。)
如果要将此实用程序用于项目,则必须以某种方式使用Java解压缩gzip
文件,然后将输出存储在String中并将其传递给驱动程序的main方法。
String gzipStr = ... extract gzip as string
com.example.DriverMain.main({gzipStr});//suppose that main method is in com.example.DriverMain class
您可以通过查看驱动程序JAR中的META-INF/MANIFEST.MF
内容找到主类。