abstract class IndexBasedZipOps extends CreateZip
Provides efficient implementation of operations on zip files * that are used for implementation of the Straight to Jar feature.
The implementation is based on index (aka central directory) that is located at the end of the zip file and contains among others the name/path and offset where the actual data of stored file is located. Reading zips should always be done based on that index, which means that it is often enough to manipulate this index without rewriting the other part of the file. This class heavily relies on this fact.
This class abstracts over the actual operations on index i.e. reading, manipulating and storing it making it easy to replace.
- Alphabetic
- By Inheritance
- IndexBasedZipOps
- CreateZip
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new IndexBasedZipOps()
Type Members
- final class CachedStamps extends AnyRef
Reads timestamps of zip entries.
Reads timestamps of zip entries. On the first access to a given zip it reads the timestamps once and keeps them cached for future lookups.
It only supports reading stamps from a single zip. The zip passed as an argument is only used to initialize the cache and is later ignored. This is enough as stamps are only read from the output jar.
- abstract type CentralDir
Represents the central directory (index) of a zip file.
Represents the central directory (index) of a zip file. It must contain the start offset (where it is located in the zip file) and list of headers
- abstract type Header
Represents a header of a zip entry located inside the central directory.
Represents a header of a zip entry located inside the central directory. It has to contain the timestamp, name/path and offset to the actual data in zip file.
Abstract Value Members
- abstract def getCentralDirStart(centralDir: CentralDir): Long
- Attributes
- protected
- abstract def getFileName(header: Header): String
- Attributes
- protected
- abstract def getFileOffset(header: Header): Long
- Attributes
- protected
- abstract def getHeaders(centralDir: CentralDir): Seq[Header]
- Attributes
- protected
- abstract def getLastModifiedTime(header: Header): Long
- Attributes
- protected
- abstract def readCentralDir(path: Path): CentralDir
- Attributes
- protected
- abstract def setCentralDirStart(centralDir: CentralDir, centralDirStart: Long): Unit
- Attributes
- protected
- abstract def setFileOffset(header: Header, offset: Long): Unit
- Attributes
- protected
- abstract def setHeaders(centralDir: CentralDir, headers: Seq[Header]): Unit
- Attributes
- protected
- abstract def writeCentralDir(centralDir: CentralDir, outputStream: OutputStream): Unit
- Attributes
- protected
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def createZip(target: File, files: Seq[(File, String)]): Unit
- Definition Classes
- CreateZip
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def includeInArchive(zipFile: File, files: Seq[(File, String)]): Unit
Adds
files(plain files) to the specified zip file.Adds
files(plain files) to the specified zip file. Implemented by creating a new zip with the plain files. IfzipFilealready exists, the archives will be merged. Plain files are not removed after this operation.- zipFile
A zip file to add files to
- files
a sequence of tuples with actual file to include and the path in the zip where it should be put.
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def listEntries(zipFile: File): Seq[String]
- def mergeArchives(target: Path, source: Path): Unit
- def mergeArchives(into: File, from: File): Unit
Merges two zip files.
Merges two zip files. It works by appending contents of
fromtointo. Indices are combined, in case of duplicates, the final entries that are used are fromfrom. The final merged zip is available underintopath, andfromis deleted.- into
the target zip file to merge to
- from
the source zip file that is added/merged to
into
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- def readCentralDir(zipFile: File): CentralDir
Reads the current index from given zip file
Reads the current index from given zip file
- zipFile
path to the zip file
- returns
current index
- def removeEntries(zipFile: File, entries: Iterable[String]): Unit
Removes specified entries from given zip file by replacing current index with a version without those entries.
Removes specified entries from given zip file by replacing current index with a version without those entries.
- zipFile
the zip file to remove entries from
- entries
paths to files inside the jar e.g. sbt/internal/inc/IndexBasedZipOps.class
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- def writeCentralDir(zipFile: File, centralDir: CentralDir): Unit
Replaces index inside the zip file.
Replaces index inside the zip file.
- zipFile
the zip file that should have the index updated
- centralDir
the index to be stored in the file