First commit.

This commit is contained in:
Erik C. Thauvin 2017-04-10 22:10:01 -07:00
commit 99250cc9cb
16 changed files with 201 additions and 0 deletions

View file

@ -0,0 +1,84 @@
package com.example
import org.apache.commons.compress.archivers.zip.*
import java.io.File
import java.util.*
internal var allFilesPredicate: ZipArchiveEntryPredicate = ZipArchiveEntryPredicate { true }
fun main(args: Array<String>) {
val kobalt = File("kobalt-1.0.58.jar")
val zip = File("kobalt-1.0.58.zip")
val src = File("kobalt-1.0.58-sources.jar")
//rezip2(kobalt, zip)
rezip3(kobalt, src, zip)
}
fun rezip(jarIn: File, zipOut: File) {
val s = System.currentTimeMillis()
val zos = ZipArchiveOutputStream(zipOut)
zos.encoding = "UTF-8"
val zip = ZipFile(jarIn)
zip.copyRawEntries(zos, allFilesPredicate)
zos.close()
zip.close()
println("Rezip Time: " + (System.currentTimeMillis() - s) + "ms")
}
fun rezip2(jarIn: File, zipOut: File) {
val s = System.currentTimeMillis()
val zos = ZipArchiveOutputStream(zipOut)
zos.encoding = "UTF-8"
val zip = ZipFile(jarIn)
for (entry in zip.entries) {
zos.addRawArchiveEntry(entry, zip.getRawInputStream(entry))
}
zos.close()
zip.close()
println("Rezip2 Time: " + (System.currentTimeMillis() - s) + "ms")
}
fun rezip3(jarIn: File, srcJar: File, zipOut: File) {
val s = System.currentTimeMillis()
val zos = ZipArchiveOutputStream(zipOut)
zos.encoding = "UTF-8"
val jar = ZipFile(jarIn)
val jarEntries = jar.entries
for (entry in jar.entries) {
zos.addRawArchiveEntry(entry, jar.getRawInputStream(entry))
}
jar.close()
val src = ZipFile(srcJar)
for (entry in src.entries) {
if (!entryExists(jarEntries, entry)) {
zos.addRawArchiveEntry(entry, src.getRawInputStream(entry))
}
}
src.close()
zos.close()
println("Rezip3 Time: " + (System.currentTimeMillis() - s) + "ms")
}
fun entryExists(jarEntries: Enumeration<ZipArchiveEntry>, entry: ZipArchiveEntry): Boolean {
for (e in jarEntries) {
if (e.name == entry.name) {
return true
}
}
return false
}