Example #1
0
        // Uncompress()
        // string compressFileType = null
        public UncompressMultipleResult UncompressMultiple(string file, string directory             = null, IEnumerable <string> selectedFiles = null, UncompressOptions uncompressOptions = UncompressOptions.None,
                                                           UncompressMultipleOptions multipleOptions = UncompressMultipleOptions.None)
        {
            //bool extractFullPath = (multipleOptions & UncompressMultipleOptions.ExtractFullPath) == UncompressMultipleOptions.ExtractFullPath;
            //bool overrideExistingFile = (multipleOptions & UncompressMultipleOptions.OverrideExistingFile) == UncompressMultipleOptions.OverrideExistingFile;
            //bool renameExistingFile = (multipleOptions & UncompressMultipleOptions.RenameExistingFile) == UncompressMultipleOptions.RenameExistingFile;
            bool uncompressNestedCompressFiles = (multipleOptions & UncompressMultipleOptions.UncompressNestedCompressFiles) == UncompressMultipleOptions.UncompressNestedCompressFiles;
            bool deleteNestedCompressFiles     = (multipleOptions & UncompressMultipleOptions.DeleteNestedCompressFiles) == UncompressMultipleOptions.DeleteNestedCompressFiles;

            //UncompressBaseOptions uncompressBaseOptions = UncompressBaseOptions.None;
            //if (extractFullPath)
            //    uncompressBaseOptions |= UncompressBaseOptions.ExtractFullPath;
            //if (overrideExistingFile)
            //    uncompressBaseOptions |= UncompressBaseOptions.OverrideExistingFile;
            //if (renameExistingFile)
            //    uncompressBaseOptions |= UncompressBaseOptions.RenameExistingFile;

            List <string> allUncompressFiles = new List <string>();
            //List<string> allCompressFiles = new List<string>();
            List <UncompressFileResult> uncompressFileResults = new List <UncompressFileResult>();
            List <string> compressFiles = new List <string>();

            compressFiles.Add(file);
            bool nestedCompressFile = false;

            do
            {
                List <string> newCompressFiles = new List <string>();
                foreach (string compressFile in compressFiles)
                {
                    if (directory == null)
                    {
                        directory = zpath.PathSetExtension(compressFile, "");
                    }
                    if (zDirectory.Exists(directory))
                    {
                        directory = zdir.GetNewDirectory(directory);
                    }

                    //CompressBaseManager compressBaseManager = GetCompressBaseManager(compressFile);
                    //if (compressFileType == null)
                    //    compressFileType = zPath.GetExtension(compressFile);
                    //CompressBaseManager compressBaseManager = GetCompressBaseManager(compressFileType);
                    //compressFileType = null;

                    //string[] uncompressFiles = null;
                    IEnumerable <string> uncompressFiles      = null;
                    UncompressFileResult uncompressFileResult = new UncompressFileResult();
                    uncompressFileResult.File = compressFile;
                    try
                    {
                        // uncompressBaseOptions
                        uncompressFiles            = _compressManager.Uncompress(compressFile, directory, selectedFiles, uncompressOptions);
                        uncompressFileResult.Error = false;

                        if (nestedCompressFile && deleteNestedCompressFiles)
                        {
                            zFile.Delete(compressFile);
                        }
                    }
                    catch (Exception ex)
                    {
                        Trace.WriteLine("error uncompress file \"{0}\"", file);
                        Trace.WriteLine(ex.Message);
                        uncompressFileResult.Error = true;
                    }

                    uncompressFileResults.Add(uncompressFileResult);

                    if (uncompressFiles != null)
                    {
                        foreach (string uncompressFile in uncompressFiles)
                        {
                            if (uncompressNestedCompressFiles && IsCompressFile(uncompressFile))
                            {
                                newCompressFiles.Add(uncompressFile);
                                //if (!deleteNestedCompressFiles)
                                //    allCompressFiles.Add(uncompressFile);
                            }
                            else
                            {
                                allUncompressFiles.Add(uncompressFile);
                            }
                        }
                    }
                    directory = null;
                }
                compressFiles      = newCompressFiles;
                nestedCompressFile = true;
            } while (compressFiles.Count > 0);
            //return new UncompressResult { UncompressFiles = allUncompressFiles.ToArray(), CompressFiles = allCompressFiles.ToArray() };
            //return new UncompressResult { UncompressFiles = allUncompressFiles.ToArray(), UncompressFileResults = uncompressFileResults.ToArray() };
            return(new UncompressMultipleResult {
                UncompressFiles = allUncompressFiles, UncompressFileResults = uncompressFileResults
            });
        }
        // Uncompress()
        // string compressFileType = null
        public UncompressMultipleResult UncompressMultiple(string file, string directory = null, IEnumerable<string> selectedFiles = null, UncompressOptions uncompressOptions = UncompressOptions.None,
            UncompressMultipleOptions multipleOptions = UncompressMultipleOptions.None)
        {
            //bool extractFullPath = (multipleOptions & UncompressMultipleOptions.ExtractFullPath) == UncompressMultipleOptions.ExtractFullPath;
            //bool overrideExistingFile = (multipleOptions & UncompressMultipleOptions.OverrideExistingFile) == UncompressMultipleOptions.OverrideExistingFile;
            //bool renameExistingFile = (multipleOptions & UncompressMultipleOptions.RenameExistingFile) == UncompressMultipleOptions.RenameExistingFile;
            bool uncompressNestedCompressFiles = (multipleOptions & UncompressMultipleOptions.UncompressNestedCompressFiles) == UncompressMultipleOptions.UncompressNestedCompressFiles;
            bool deleteNestedCompressFiles = (multipleOptions & UncompressMultipleOptions.DeleteNestedCompressFiles) == UncompressMultipleOptions.DeleteNestedCompressFiles;

            //UncompressBaseOptions uncompressBaseOptions = UncompressBaseOptions.None;
            //if (extractFullPath)
            //    uncompressBaseOptions |= UncompressBaseOptions.ExtractFullPath;
            //if (overrideExistingFile)
            //    uncompressBaseOptions |= UncompressBaseOptions.OverrideExistingFile;
            //if (renameExistingFile)
            //    uncompressBaseOptions |= UncompressBaseOptions.RenameExistingFile;

            List<string> allUncompressFiles = new List<string>();
            //List<string> allCompressFiles = new List<string>();
            List<UncompressFileResult> uncompressFileResults = new List<UncompressFileResult>();
            List<string> compressFiles = new List<string>();
            compressFiles.Add(file);
            bool nestedCompressFile = false;

            do
            {
                List<string> newCompressFiles = new List<string>();
                foreach (string compressFile in compressFiles)
                {
                    if (directory == null)
                        directory = zpath.PathSetExtension(compressFile, "");
                    if (zDirectory.Exists(directory))
                        directory = zdir.GetNewDirectory(directory);

                    //CompressBaseManager compressBaseManager = GetCompressBaseManager(compressFile);
                    //if (compressFileType == null)
                    //    compressFileType = zPath.GetExtension(compressFile);
                    //CompressBaseManager compressBaseManager = GetCompressBaseManager(compressFileType);
                    //compressFileType = null;

                    //string[] uncompressFiles = null;
                    IEnumerable<string> uncompressFiles = null;
                    UncompressFileResult uncompressFileResult = new UncompressFileResult();
                    uncompressFileResult.File = compressFile;
                    try
                    {
                        // uncompressBaseOptions
                        uncompressFiles = _compressManager.Uncompress(compressFile, directory, selectedFiles, uncompressOptions);
                        uncompressFileResult.Error = false;

                        if (nestedCompressFile && deleteNestedCompressFiles)
                            zFile.Delete(compressFile);
                    }
                    catch (Exception ex)
                    {
                        Trace.WriteLine("error uncompress file \"{0}\"", file);
                        Trace.WriteLine(ex.Message);
                        uncompressFileResult.Error = true;
                    }

                    uncompressFileResults.Add(uncompressFileResult);

                    if (uncompressFiles != null)
                    {
                        foreach (string uncompressFile in uncompressFiles)
                        {
                            if (uncompressNestedCompressFiles && IsCompressFile(uncompressFile))
                            {
                                newCompressFiles.Add(uncompressFile);
                                //if (!deleteNestedCompressFiles)
                                //    allCompressFiles.Add(uncompressFile);
                            }
                            else
                                allUncompressFiles.Add(uncompressFile);
                        }
                    }
                    directory = null;
                }
                compressFiles = newCompressFiles;
                nestedCompressFile = true;
            } while (compressFiles.Count > 0);
            //return new UncompressResult { UncompressFiles = allUncompressFiles.ToArray(), CompressFiles = allCompressFiles.ToArray() };
            //return new UncompressResult { UncompressFiles = allUncompressFiles.ToArray(), UncompressFileResults = uncompressFileResults.ToArray() };
            return new UncompressMultipleResult { UncompressFiles = allUncompressFiles, UncompressFileResults = uncompressFileResults };
        }