Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

How to Untar a File in Java

In this post we'll see a Java program showing how to untar a tar file. It has both the steps to first decompress a .tar.gz file and later untar it.

  • Refer Creating tar file and GZipping multiple files to see how to create a tar file.

Using Apache Commons Compress

Apache Commons Compress library is used in the code for untarring a file. You can download it from here \– https://commons.apache.org/proper/commons-compress/download_compress.cgi.

Make sure to add commons-compress-xxx.jar in your application’s class path. I have used commons-compress-1.13 version.

Java example to untar a file

This Java program has two methods deCompressGZipFile() method is used to decompress a .tar.gz file to get a .tar file. Using unTarFile() method this .tar file is untarred.


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
import org.apache.commons.compress.utils.IOUtils;

public class UnTarDemo {
public static void main(String[] args) {
// Path to input file, which is a
// tar file compressed to create gzip file
String INPUT_FILE = "G:\\Test.tar.gz";
// This folder should exist, that's where
// .tar file will go
String TAR_FOLDER = "G:\\TarFile";
// After untar files will go to this folder
String DESTINATION_FOLDER = "G:\\Temp";
UnTarDemo unTarDemo = new UnTarDemo();
try {
File inputFile = new File(INPUT_FILE);
String outputFile = getFileName(inputFile, TAR_FOLDER);
System.out.println("outputFile " + outputFile);
File tarFile = new File(outputFile);
// Calling method to decompress file
tarFile = unTarDemo.deCompressGZipFile(inputFile, tarFile);
File destFile = new File(DESTINATION_FOLDER);
if(!destFile.exists()){
destFile.mkdir();
}
// Calling method to untar file
unTarDemo.unTarFile(tarFile, destFile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

/**
*
* @param tarFile
* @param destFile
* @throws IOException
*/
private void unTarFile(File tarFile, File destFile) throws IOException{
FileInputStream fis = new FileInputStream(tarFile);
TarArchiveInputStream tis = new TarArchiveInputStream(fis);
TarArchiveEntry tarEntry = null;

// tarIn is a TarArchiveInputStream
while ((tarEntry = tis.getNextTarEntry()) != null) {
File outputFile = new File(destFile + File.separator + tarEntry.getName());
if(tarEntry.isDirectory()){
System.out.println("outputFile Directory ---- "
+ outputFile.getAbsolutePath());
if(!outputFile.exists()){
outputFile.mkdirs();
}
}else{
//File outputFile = new File(destFile + File.separator + tarEntry.getName());
System.out.println("outputFile File ---- " + outputFile.getAbsolutePath());
outputFile.getParentFile().mkdirs();
//outputFile.createNewFile();
FileOutputStream fos = new FileOutputStream(outputFile);
IOUtils.copy(tis, fos);
fos.close();
}
}
tis.close();
}

/**
* Method to decompress a gzip file
* @param gZippedFile
* @param newFile
* @throws IOException
*/
private File deCompressGZipFile(File gZippedFile, File tarFile) throws IOException{
FileInputStream fis = new FileInputStream(gZippedFile);
GZIPInputStream gZIPInputStream = new GZIPInputStream(fis);

FileOutputStream fos = new FileOutputStream(tarFile);
byte[] buffer = new byte[1024];
int len;
while((len = gZIPInputStream.read(buffer)) > 0){
fos.write(buffer, 0, len);
}
fos.close();
gZIPInputStream.close();
return tarFile;
}

/**
* This method is used to get the tar file name from the gz file
* by removing the .gz part from the input file
* @param inputFile
* @param outputFolder
* @return
*/
private static String getFileName(File inputFile, String outputFolder){
return outputFolder + File.separator +
inputFile.getName().substring(0, inputFile.getName().lastIndexOf('.'));
}
}

That's all for this topic How to Untar a File in Java. If you have any doubt or any suggestions to make please drop a comment. Thanks!

>>>Return to Java Programs Page


Related Topics

  1. Creating Tar File And GZipping Multiple Files in Java
  2. Zipping files in Java
  3. How to Create Password Protected Zip File in Java
  4. Compressing and Decompressing File in GZIP Format
  5. How to read file from the last line in Java

You may also like-

  1. Reading file in Java 8
  2. Writing file in Java
  3. Producer consumer Java Program using volatile
  4. How to inject prototype scoped bean in singleton bean
  5. Insert\Update using NamedParameterJDBCTemplate in Spring framework
  6. interface default methods in Java 8
  7. Lambda expressions in Java 8
  8. StringBuffer in Java


This post first appeared on Altair Gate - News, please read the originial post: here

Share the post

How to Untar a File in Java

×

Subscribe to Altair Gate - News

Get updates delivered right to your inbox!

Thank you for your subscription

×