这个文件是如何用Java传递的?

时间:2016-04-20 03:27:56

标签: java netbeans

我运行这个有这个运行命令的程序:

gzip -dc file.gz | java driver

有人可以解释一下这是如何工作的(这个file.gz如何传递给java程序)以及如何使用Netbeans来做到这一点。

问候!

1 个答案:

答案 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内容找到主类。