Search code examples
truezip

Is it possible to extract a large file using Truezip in java?


import java.io.IOException;
import utils.myDate;
import utils.myLog;
import de.schlichtherle.truezip.file.TArchiveDetector;
import de.schlichtherle.truezip.file.TFile;

public class Main 
{
    /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub

    Extract(new String("C:/Documents and Settings/mitracomm/My Documents/Downloads/JAR"), new String("D:/Source/Extract Result") , "");     
}

private static void Extract(String src, String dst, String incPath)
{
    TFile srcFile = new TFile(src + "/" + incPath);
    TFile dstFile = new TFile(dst);

    try {
        TFile.cp_rp(srcFile, dstFile, TArchiveDetector.ALL);
    } catch (IOException e) {
        myLog.add(myDate.today("yyyyMMdd") + ".log", "error", e.getMessage());
    }
}

Will the above code work with a large archive? Also, how can I extract every archive in a directory without having to fill the incPath or specify archives' name? I have tried to do this but I end up with copies of all the archives from origin directory and not extracted files.


Solution

  • The code is principally OK, but I'ld use:

    public class Main {
        public static void main(String[] args) {
            Extract(new String("C:/Documents and Settings/mitracomm/My Documents/Downloads/JAR"), new String("D:/Source/Extract Result") , "");        
        }
    
        private static void Extract(String src, String dst, String incPath) {
            TFile srcFile = new TFile(src, incPath);
            TFile dstFile = new TFile(dst);
            try {
                TFile.cp_rp(srcFile, dstFile, TArchiveDetector.NULL);
            } catch (IOException e) {
                // I don't like logging for this purpose, but if you must...
                myLog.add(myDate.today("yyyyMMdd") + ".log", "error", e.getMessage());
            }
        }
    }
    

    I'm not sure if you really want three arguments for the Extract method, though.

    And finally, yes TrueZIP handles ZIP files beyond 4GB size correctly.