Exemplo n.º 1
0
        public static bool extractZipFileToDirectory(cape.File zipFile, cape.File destDir, System.Action <cape.File> listener = null)
        {
            if (!(zipFile != null))
            {
                return(false);
            }
            if (!(destDir != null))
            {
                return(false);
            }
            var zf = capex.util.ZipReader.forFile(zipFile);

            if (!(zf != null))
            {
                return(false);
            }
            if (!destDir.isDirectory())
            {
                destDir.createDirectoryRecursive();
            }
            if (!destDir.isDirectory())
            {
                return(false);
            }
            var array = zf.getEntries();

            if (array != null)
            {
                var n = 0;
                var m = array.Count;
                for (n = 0; n < m; n++)
                {
                    var entry = array[n];
                    if (entry != null)
                    {
                        var ename = entry.getName();
                        if (cape.String.isEmpty(ename))
                        {
                            continue;
                        }
                        var dd = destDir;
                        ename = cape.String.replace(ename, '\\', '/');
                        var array2 = cape.String.split(ename, '/');
                        if (array2 != null)
                        {
                            var n2 = 0;
                            var m2 = array2.Count;
                            for (n2 = 0; n2 < m2; n2++)
                            {
                                var comp = array2[n2];
                                if (comp != null)
                                {
                                    if (object.Equals(comp, ".") || object.Equals(comp, ".."))
                                    {
                                        continue;
                                    }
                                    dd = dd.entry(comp);
                                }
                            }
                        }
                        if (listener != null)
                        {
                            listener(dd);
                        }
                        if (!entry.writeToFile(dd))
                        {
                            return(false);
                        }
                    }
                }
            }
            return(true);
        }