001    package railo.commons.io.compress;
002    
003    import java.io.IOException;
004    import java.util.zip.ZipFile;
005    import java.util.zip.ZipOutputStream;
006    
007    import railo.commons.cli.Command;
008    import railo.commons.io.CompressUtil;
009    import railo.commons.io.res.Resource;
010    
011    public final class ZipUtil {
012    
013            public static void unzip(Resource zip, Resource dir) throws IOException {
014                    if(zip.length()>0 && (dir.exists() || dir.mkdirs())) {
015                            if("Mac OS X".equalsIgnoreCase(System.getProperty("os.name"))) {
016                                    try {
017                                            //Command.execute("unzip "+zip+" -d "+dir);
018                                            Command.execute("unzip",new String[]{"-o",zip.getAbsolutePath(),"-d",dir.getAbsolutePath()});
019                                    } 
020                                    catch (InterruptedException e) {}
021                                    return;
022                            }
023                            CompressUtil.extract(CompressUtil.FORMAT_ZIP, zip, dir);
024                    }
025            }
026    
027            public static void close(ZipOutputStream zos) {
028                    if(zos==null) return;
029                    try {
030                            zos.close();
031                    } 
032                    catch (IOException e) {}
033            }
034    
035            public static void close(ZipFile file) {
036                    if(file==null) return;
037                    try {
038                            file.close();
039                    } 
040                    catch (IOException e) {}
041            }
042    }