Here is code that uses java classes already included in QIE:
function extractTarGZ(fileNameAndPath, cdaDirectory) {
var inputStream;
var BUFFER_SIZE = 4096;
var gzipIn;
var tarIn;
try {
inputStream = new java.io.FileInputStream(new java.io.File(fileNameAndPath));
gzipIn = new org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream(inputStream);
tarIn = new org.apache.commons.compress.archivers.tar.TarArchiveInputStream(gzipIn);
var entry;
while ((entry = tarIn.getNextTarEntry()) !== null) {
/** If the entry is a directory, create the directory. **/
if (entry.isDirectory()) {
var f = new java.io.File(cdaDirectory + entry.getName());
var created = f.mkdir();
if (!created) {
qie.debug("Unable to create directory '%s', during extraction of archive contents.\n" + f.getAbsolutePath());
}
} else {
var count;
var data = new java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, BUFFER_SIZE);
var fos = new java.io.FileOutputStream(cdaDirectory + entry.getName(), false);
var dest;
try {
dest = new java.io.BufferedOutputStream(fos, BUFFER_SIZE);
while ((count = tarIn.read(data, 0, BUFFER_SIZE)) != -1) {
dest.write(data, 0, count);
}
dest.close();
} catch (e1) {
if (dest) {
dest.close();
}
throw 'e1: ' + e1;
}
}
}
tarIn.close();
qie.debug("Untar completed successfully!");
} catch (e) {
throw 'e: ' + e;
}
finally {
if (tarIn) {
tarIn.close();
}
if (gzipIn) {
gzipIn.close();
}
if (inputStream) {
inputStream.close();
}
}
}
try {
var fileNameAndPath = "C:\\temp\\test.tar.gz";
extractTarGZ(fileNameAndPath, "c:\\temp\\cdaDirectory\\");
qie.deleteFile(fileNameAndPath);
} catch (e) {
throw "failed to run :(" + e;
}