コード例 #1
0
        public override IEnumerable<string> Uncompress(string compressFile, string directory, IEnumerable<string> selectedFiles = null, UncompressOptions uncompressOptions = UncompressOptions.None)
        {
            bool extractFullPath = (uncompressOptions & UncompressOptions.ExtractFullPath) == UncompressOptions.ExtractFullPath;
            bool overrideExistingFile = (uncompressOptions & UncompressOptions.OverrideExistingFile) == UncompressOptions.OverrideExistingFile;
            bool renameExistingFile = (uncompressOptions & UncompressOptions.RenameExistingFile) == UncompressOptions.RenameExistingFile;

            List<string> files = new List<string>();

            Dictionary<string, string> dicCompressedFiles = null;
            if (selectedFiles != null)
            {
                dicCompressedFiles = new Dictionary<string, string>();
                foreach (string compressedFile in selectedFiles)
                    dicCompressedFiles.Add(compressedFile, compressedFile);
            }

            using (Stream stream = zFile.OpenRead(compressFile))
            {
                var reader = ReaderFactory.Open(stream);
                while (reader.MoveToNextEntry())
                {
                    if (!reader.Entry.IsDirectory)
                    {
                        string compressedFile = reader.Entry.FilePath;

                        if (dicCompressedFiles != null && !dicCompressedFiles.ContainsKey(compressedFile))
                            continue;

                        string uncompressFile;
                        if (extractFullPath)
                            uncompressFile = compressedFile;
                        else
                            uncompressFile = zPath.GetFileName(compressedFile);
                        uncompressFile = zPath.Combine(directory, uncompressFile);

                        if (zFile.Exists(uncompressFile))
                        {
                            if (overrideExistingFile)
                                zFile.Delete(uncompressFile);
                            else if (renameExistingFile)
                                uncompressFile = zfile.GetNewFilename(uncompressFile);
                            else
                                throw new PBException("error file already exist can't uncompress \"{0}\"", uncompressFile);
                        }

                        zfile.CreateFileDirectory(uncompressFile);
                        reader.WriteEntryToFile(uncompressFile, ExtractOptions.None);
                        files.Add(uncompressFile);
                    }
                }
            }
            return files;
        }
コード例 #2
0
        public override IEnumerable <string> Uncompress(string compressFile, string directory, IEnumerable <string> selectedFiles = null, UncompressOptions uncompressOptions = UncompressOptions.None)
        {
            bool extractFullPath      = (uncompressOptions & UncompressOptions.ExtractFullPath) == UncompressOptions.ExtractFullPath;
            bool overrideExistingFile = (uncompressOptions & UncompressOptions.OverrideExistingFile) == UncompressOptions.OverrideExistingFile;
            bool renameExistingFile   = (uncompressOptions & UncompressOptions.RenameExistingFile) == UncompressOptions.RenameExistingFile;

            List <string> files = new List <string>();

            Dictionary <string, string> dicCompressedFiles = null;

            if (selectedFiles != null)
            {
                dicCompressedFiles = new Dictionary <string, string>();
                foreach (string compressedFile in selectedFiles)
                {
                    dicCompressedFiles.Add(compressedFile, compressedFile);
                }
            }

            using (Stream stream = zFile.OpenRead(compressFile))
            {
                var reader = ReaderFactory.Open(stream);
                while (reader.MoveToNextEntry())
                {
                    if (!reader.Entry.IsDirectory)
                    {
                        string compressedFile = reader.Entry.FilePath;

                        if (dicCompressedFiles != null && !dicCompressedFiles.ContainsKey(compressedFile))
                        {
                            continue;
                        }

                        string uncompressFile;
                        if (extractFullPath)
                        {
                            uncompressFile = compressedFile;
                        }
                        else
                        {
                            uncompressFile = zPath.GetFileName(compressedFile);
                        }
                        uncompressFile = zPath.Combine(directory, uncompressFile);

                        if (zFile.Exists(uncompressFile))
                        {
                            if (overrideExistingFile)
                            {
                                zFile.Delete(uncompressFile);
                            }
                            else if (renameExistingFile)
                            {
                                uncompressFile = zfile.GetNewFilename(uncompressFile);
                            }
                            else
                            {
                                throw new PBException("error file already exist can't uncompress \"{0}\"", uncompressFile);
                            }
                        }

                        zfile.CreateFileDirectory(uncompressFile);
                        reader.WriteEntryToFile(uncompressFile, ExtractOptions.None);
                        files.Add(uncompressFile);
                    }
                }
            }
            return(files);
        }
コード例 #3
0
ファイル: CompressManager.cs プロジェクト: labeuze/source
 // Uncompress and rename files : extract CompressFile.CompressedFile and rename to CompressFile.File, only filename of CompressFile.File is used no path
 public IEnumerable<string> Uncompress(string compressFile, string directory, IEnumerable<CompressFile> selectedFiles, UncompressOptions uncompressOptions = UncompressOptions.None)
 {
     if (directory == null)
         directory = zPath.GetDirectoryName(compressFile);
     return _compressManager.Uncompress(compressFile, directory, selectedFiles, uncompressOptions);
 }
コード例 #4
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
            });
        }
コード例 #5
0
ファイル: ZipManager.cs プロジェクト: labeuze/source
 public override IEnumerable<string> Uncompress(string compressFile, string directory, IEnumerable<CompressFile> selectedFiles, UncompressOptions uncompressOptions = UncompressOptions.None)
 {
     return ZipArchive.Unzip(compressFile, directory, selectedFiles, uncompressOptions);
 }
コード例 #6
0
 public override IEnumerable<string> Uncompress(string compressFile, string directory, IEnumerable<CompressFile> selectedFiles, UncompressOptions uncompressOptions = UncompressOptions.None)
 {
     throw new PBException("not implemented");
 }
コード例 #7
0
ファイル: ZipArchive.cs プロジェクト: labeuze/source
 public static IEnumerable<string> Unzip(string zipFile, string directory, IEnumerable<CompressFile> selectedFiles, UncompressOptions uncompressOptions = UncompressOptions.None)
 {
     using (FileStream fs = new FileStream(zipFile, FileMode.Open))
     using (ZipArchive zipArchive = new ZipArchive(fs, ZipArchiveMode.Read))
     {
         zipArchive.SetUnzipOptions(uncompressOptions);
         zipArchive.SetUnzipSelectedFiles(selectedFiles);
         return zipArchive.Unzip(directory);
     }
 }
コード例 #8
0
ファイル: CompressBaseManager.cs プロジェクト: 24/source_04
 public abstract IEnumerable <string> Uncompress(string compressFile, string directory, IEnumerable <CompressFile> selectedFiles, UncompressOptions uncompressOptions = UncompressOptions.None);
コード例 #9
0
ファイル: CompressBaseManager.cs プロジェクト: labeuze/source
 public abstract IEnumerable<string> Uncompress(string compressFile, string directory, IEnumerable<CompressFile> selectedFiles, UncompressOptions uncompressOptions = UncompressOptions.None);
コード例 #10
0
ファイル: ZipArchive.cs プロジェクト: 24/source_04
 public static IEnumerable <string> Unzip(string zipFile, string directory, IEnumerable <CompressFile> selectedFiles, UncompressOptions uncompressOptions = UncompressOptions.None)
 {
     //using (FileStream fs = new FileStream(zipFile, FileMode.Open))
     using (FileStream fs = zFile.Open(zipFile, FileMode.Open))
         using (ZipArchive zipArchive = new ZipArchive(fs, ZipArchiveMode.Read))
         {
             zipArchive.SetUnzipOptions(uncompressOptions);
             zipArchive.SetUnzipSelectedFiles(selectedFiles);
             return(zipArchive.Unzip(directory));
         }
 }
コード例 #11
0
ファイル: ZipManager.cs プロジェクト: 24/source_04
 public override IEnumerable <string> Uncompress(string compressFile, string directory, IEnumerable <CompressFile> selectedFiles, UncompressOptions uncompressOptions = UncompressOptions.None)
 {
     return(ZipArchive.Unzip(compressFile, directory, selectedFiles, uncompressOptions));
 }
コード例 #12
0
ファイル: ZipArchive.cs プロジェクト: 24/source_04
 private void SetUnzipOptions(UncompressOptions options)
 {
     _extractFullPath      = (options & UncompressOptions.ExtractFullPath) == UncompressOptions.ExtractFullPath;
     _overrideExistingFile = (options & UncompressOptions.OverrideExistingFile) == UncompressOptions.OverrideExistingFile;
     _renameExistingFile   = (options & UncompressOptions.RenameExistingFile) == UncompressOptions.RenameExistingFile;
 }
コード例 #13
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 };
        }
コード例 #14
0
ファイル: Test_Zip_f.cs プロジェクト: labeuze/source
 public static void Test_CompressManager_01(string file, string directory = null, UncompressOptions options = UncompressOptions.None)
 {
     Trace.WriteLine("Uncompress file \"{0}\" in \"{1}\"", file, directory);
     Trace.WriteLine("options {0}", options);
     CompressManager compressManager = new CompressManager();
     UncompressResult result = compressManager.Uncompress(file, directory, options);
     //Trace.WriteLine("Uncompress files :");
     //foreach (string file2 in result.UncompressFiles)
     //    Trace.WriteLine("  \"{0}\"", file2);
     //Trace.WriteLine("Compress files :");
     //foreach (string file2 in result.CompressFiles)
     //    Trace.WriteLine("  \"{0}\"", file2);
     Trace.WriteLine("result :");
     Trace.WriteLine(result.zToJson());
 }
コード例 #15
0
 public override IEnumerable <string> Uncompress(string compressFile, string directory, IEnumerable <CompressFile> selectedFiles, UncompressOptions uncompressOptions = UncompressOptions.None)
 {
     throw new PBException("not implemented");
 }
コード例 #16
0
ファイル: Test_Zip_f.cs プロジェクト: 24/source_04
        public static void Test_CompressManager_01(string file, string directory = null, UncompressOptions options = UncompressOptions.None)
        {
            Trace.WriteLine("Uncompress file \"{0}\" in \"{1}\"", file, directory);
            Trace.WriteLine("options {0}", options);
            CompressManager  compressManager = new CompressManager();
            UncompressResult result          = compressManager.Uncompress(file, directory, options);

            //Trace.WriteLine("Uncompress files :");
            //foreach (string file2 in result.UncompressFiles)
            //    Trace.WriteLine("  \"{0}\"", file2);
            //Trace.WriteLine("Compress files :");
            //foreach (string file2 in result.CompressFiles)
            //    Trace.WriteLine("  \"{0}\"", file2);
            Trace.WriteLine("result :");
            Trace.WriteLine(result.zToJson());
        }
コード例 #17
0
 // Uncompress and rename files : extract CompressFile.CompressedFile and rename to CompressFile.File, only filename of CompressFile.File is used no path
 public IEnumerable <string> Uncompress(string compressFile, string directory, IEnumerable <CompressFile> selectedFiles, UncompressOptions uncompressOptions = UncompressOptions.None)
 {
     if (directory == null)
     {
         directory = zPath.GetDirectoryName(compressFile);
     }
     return(_compressManager.Uncompress(compressFile, directory, selectedFiles, uncompressOptions));
 }
コード例 #18
0
ファイル: ZipArchive.cs プロジェクト: labeuze/source
 private void SetUnzipOptions(UncompressOptions options)
 {
     _extractFullPath = (options & UncompressOptions.ExtractFullPath) == UncompressOptions.ExtractFullPath;
     _overrideExistingFile = (options & UncompressOptions.OverrideExistingFile) == UncompressOptions.OverrideExistingFile;
     _renameExistingFile = (options & UncompressOptions.RenameExistingFile) == UncompressOptions.RenameExistingFile;
 }