# 提取 JAR 文件的内容

> 原文： [https://docs.oracle.com/javase/tutorial/deployment/jar/unpack.html](https://docs.oracle.com/javase/tutorial/deployment/jar/unpack.html)

用于提取 JAR 文件内容的基本命令是：

```
jar xf jar-file [archived-file(s)]

```

让我们看一下这个命令中的选项和参数：

*   `x` 选项表示您希望 _ 从 JAR 存档中提取 _ 文件。
*   `f` 选项表示要从中提取文件的 JAR _ 文件 _ 在命令行中指定，而不是通过 stdin 指定。
*   `jar 文件`参数是从中提取文件的 JAR 文件的文件名（或路径和文件名）。
*   `archived-file（s）`是一个可选参数，由要从存档中提取的文件的空格分隔列表组成。如果此参数不存在，Jar 工具将提取存档中的所有文件。

像往常一样， `x` 和 `f` 选项出现在命令中的顺序无关紧要，但它们之间一定不能有空格。

在提取文件时，Jar 工具会复制所需的文件并将它们写入当前目录，从而重现文件在存档中的目录结构。原始 JAR 文件保持不变。

* * *

**Caution:** When it extracts files, the Jar tool will overwrite any existing files having the same pathname as the extracted files.

* * *

## 一个例子

让我们从前面部分中使用的 TicTacToe JAR 文件中提取一些文件。回想一下 `TicTacToe.jar` 的内容是：

```
META-INF/MANIFEST.MF
TicTacToe.class
TicTacToe.class
TicTacToe.java
audio/
audio/beep.au
audio/ding.au
audio/return.au
audio/yahoo1.au
audio/yahoo2.au
example1.html
images/
images/cross.gif
images/not.gif

```

假设您要提取 `TicTacToe` 类文件和 `cross.gif` 图像文件。为此，您可以使用此命令：

```
jar xf TicTacToe.jar TicTacToe.class images/cross.gif

```

这个命令做了两件事：

*   它在当前目录中放置了 `TicTacToe.class` 的副本。
*   它创建目录`图像`，如果它还不存在，并在其中放置 `cross.gif` 的副本。

原始的 TicTacToe JAR 文件保持不变。

可以以相同的方式从 JAR 文件中提取所需的文件。当命令未指定要提取的文件时，Jar 工具将提取存档中的所有文件。例如，您可以使用以下命令提取 TicTacToe 存档中的所有文件：

```
jar xf TicTacToe.jar

```