org.eclipse.jgit.internal.storage.file

## Class PackFile

- java.lang.Object
- - org.eclipse.jgit.internal.storage.file.PackFile

All Implemented Interfaces:
  Iterable<PackIndex.MutableEntry>

    public class PackFile
    extends Object
    implements Iterable<PackIndex.MutableEntry>

A Git version 2 pack file representation. A pack file contains Git objects in delta packed format yielding high compression of lots of object where some objects are similar.

### Field Summary

Fields
`static Comparator<PackFile>` `SORT` Sorts PackFiles to be most recently created to least recently created.

### Constructor Summary

Constructors
Constructor and Description
`PackFile(File packFile, int extensions)` Construct a reader for an existing, pre-indexed packfile.

### Method Summary

Methods
`void` `close()` Close the resources utilized by this repository
`PackIndex` `getIndex()`
`File` `getPackFile()`
`String` `getPackName()`
`boolean` `hasObject(AnyObjectId id)` Determine if an object is contained within the pack file.
`Iterator<PackIndex.MutableEntry>` `iterator()` Provide iterator over entries in associated pack index, that should also exist in this pack file.
`boolean` `shouldBeKept()` Determines whether a .keep file exists for this pack file.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### SORT

    public static final Comparator<PackFile> SORT

Sorts PackFiles to be most recently created to least recently created.

### Constructor Detail

#### PackFile

    public PackFile(File packFile,
            int extensions)

Construct a reader for an existing, pre-indexed packfile.

Parameters:
  `packFile` - path of the `.pack` file holding the data.
  `extensions` - additional pack file extensions with the same base as the pack

### Method Detail

#### getPackFile

    public File getPackFile()

Returns:
  the File object which locates this pack on disk.

#### getIndex

    public PackIndex getIndex()
                       throws IOException

Returns:
  the index for this pack file.
Throws:
  `IOException`

#### getPackName

    public String getPackName()

Returns:
  name extracted from `pack-*.pack` pattern.

#### hasObject

    public boolean hasObject(AnyObjectId id)
                      throws IOException

Determine if an object is contained within the pack file.

For performance reasons only the index file is searched; the main pack content is ignored entirely.

Parameters:
  `id` - the object to look for. Must not be null.
Returns:
  true if the object is in this pack; false otherwise.
Throws:
  `IOException` - the index file cannot be loaded into memory.

#### shouldBeKept

    public boolean shouldBeKept()

Determines whether a .keep file exists for this pack file.

Returns:
  true if a .keep file exist.

#### close

    public void close()

Close the resources utilized by this repository

#### iterator

    public Iterator<PackIndex.MutableEntry> iterator()

Provide iterator over entries in associated pack index, that should also exist in this pack file. Objects returned by such iterator are mutable during iteration.

Iterator returns objects in SHA-1 lexicographical order.

Specified by:
  `iterator` in interface `Iterable<PackIndex.MutableEntry>`
Returns:
  iterator over entries of associated pack index
See Also:
  `PackIndex.iterator()`