Added JarUtils: programatically extract JAR files.
This commit is contained in:
parent
2308280480
commit
e12a605b5c
@ -1,6 +1,6 @@
|
||||
#Mon, 05 Dec 2011 22:17:22 -0600
|
||||
#Mon, 02 Jan 2012 15:07:25 -0600
|
||||
name=jdb-util
|
||||
version=1.4
|
||||
version=1.5
|
||||
lib.local=true
|
||||
|
||||
build.number=9
|
||||
build.number=2
|
||||
|
36
src/main/com/jdbernard/util/JarUtils.groovy
Normal file
36
src/main/com/jdbernard/util/JarUtils.groovy
Normal file
@ -0,0 +1,36 @@
|
||||
package com.jdbernard.util
|
||||
|
||||
import java.util.jar.JarEntry
|
||||
import java.util.jar.JarFile
|
||||
import java.util.jar.JarInputStream
|
||||
import java.util.jar.JarOutputStream
|
||||
|
||||
public class JarUtils {
|
||||
|
||||
public static void extract(File f, File outputDir) {
|
||||
extract(new JarFile(f), outputDir) }
|
||||
|
||||
public static void extract(JarFile jarFile, File outputDir) {
|
||||
jarFile.entries().each { jarEntry ->
|
||||
def outputFile = new File(outputDir, jarEntry.name)
|
||||
if (jarEntry.isDirectory()) { outputFile.mkdirs() }
|
||||
else {
|
||||
jarFile.getInputStream(jarEntry).withStream { is ->
|
||||
outputFile.withOutputStream { os ->
|
||||
while (is.available() > 0) { os.write(is.read()) }}}}}}
|
||||
|
||||
public static void extract(JarInputStream jarIS, File outputDir) {
|
||||
JarEntry curEntry = jarIS.nextJarEntry
|
||||
while(curEntry != null) {
|
||||
File outFile = new File(outputDir, curEntry.name)
|
||||
if (curEntry.isDirectory()) { outFile.mkdirs() }
|
||||
else {
|
||||
outFile.withOutputStream { os ->
|
||||
byte[] buffer = new byte[curEntry.size]
|
||||
int bytesRead = jarIS.read(buffer, 0, curEntry.size as
|
||||
Integer)
|
||||
os.write(buffer, 0, bytesRead) }}
|
||||
|
||||
curEntry = jarIS.nextJarEntry }
|
||||
jarIS.close() }
|
||||
}
|
Loading…
Reference in New Issue
Block a user