# java.util.jar

Added in[API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

# java.util.jar

Provides classes for reading and writing the JAR (Java ARchive) file format, which is based on the standard ZIP file format with an optional manifest file. The manifest stores meta-information about the JAR file contents and is also used for signing JAR files.

## Package Specification

The`java.util.jar`package is based on the following specifications:

- **Info-ZIP file format** - The JAR format is based on the Info-ZIP file format. See[java.util.zip package description.](https://developer.android.com/reference/java/util/zip/package-summary.html#package-description)

  In JAR files, all file names must be encoded in the UTF-8 encoding.
- [Manifest and Signature Specification](https://docs.oracle.com/en/java/javase/17/docs/specs/jar/jar.html)- The manifest format specification.

## Interfaces

|--------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Pack200.Packer](https://developer.android.com/reference/java/util/jar/Pack200.Packer)     | The packer engine applies various transformations to the input JAR file, making the pack stream highly compressible by a compressor such as gzip or zip. |
| [Pack200.Unpacker](https://developer.android.com/reference/java/util/jar/Pack200.Unpacker) | The unpacker engine converts the packed stream to a JAR file.                                                                                            |

## Classes

|------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------|
| [Attributes](https://developer.android.com/reference/java/util/jar/Attributes)           | The Attributes class maps Manifest attribute names to associated string values.                                               |
| [Attributes.Name](https://developer.android.com/reference/java/util/jar/Attributes.Name) | The Attributes.Name class represents an attribute name stored in this Map.                                                    |
| [JarEntry](https://developer.android.com/reference/java/util/jar/JarEntry)               | This class is used to represent a JAR file entry.                                                                             |
| [JarFile](https://developer.android.com/reference/java/util/jar/JarFile)                 | The`JarFile`class is used to read the contents of a jar file from any file that can be opened with`java.io.RandomAccessFile`. |
| [JarInputStream](https://developer.android.com/reference/java/util/jar/JarInputStream)   | The`JarInputStream`class is used to read the contents of a JAR file from any input stream.                                    |
| [JarOutputStream](https://developer.android.com/reference/java/util/jar/JarOutputStream) | The`JarOutputStream`class is used to write the contents of a JAR file to any output stream.                                   |
| [Manifest](https://developer.android.com/reference/java/util/jar/Manifest)               | The Manifest class is used to maintain Manifest entry names and their associated Attributes.                                  |
| [Pack200](https://developer.android.com/reference/java/util/jar/Pack200)                 | Transforms a JAR file to or from a packed stream in Pack200 format.                                                           |

## Exceptions

|------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------|
| [JarException](https://developer.android.com/reference/java/util/jar/JarException) | Signals that an error of some sort has occurred while reading from or writing to a JAR file. |

-

  ## Interfaces

  - [Pack200.Packer](https://developer.android.com/reference/java/util/jar/Pack200.Packer)
  - [Pack200.Unpacker](https://developer.android.com/reference/java/util/jar/Pack200.Unpacker)
-

  ## Classes

  - [Attributes](https://developer.android.com/reference/java/util/jar/Attributes)
  - [Attributes.Name](https://developer.android.com/reference/java/util/jar/Attributes.Name)
  - [JarEntry](https://developer.android.com/reference/java/util/jar/JarEntry)
  - [JarFile](https://developer.android.com/reference/java/util/jar/JarFile)
  - [JarInputStream](https://developer.android.com/reference/java/util/jar/JarInputStream)
  - [JarOutputStream](https://developer.android.com/reference/java/util/jar/JarOutputStream)
  - [Manifest](https://developer.android.com/reference/java/util/jar/Manifest)
  - [Pack200](https://developer.android.com/reference/java/util/jar/Pack200)
-

  ## Exceptions

  - [JarException](https://developer.android.com/reference/java/util/jar/JarException)