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; }
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); }
// 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); }
// 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 }); }
public override IEnumerable<string> Uncompress(string compressFile, string directory, IEnumerable<CompressFile> selectedFiles, UncompressOptions uncompressOptions = UncompressOptions.None) { return ZipArchive.Unzip(compressFile, directory, selectedFiles, uncompressOptions); }
public override IEnumerable<string> Uncompress(string compressFile, string directory, IEnumerable<CompressFile> selectedFiles, UncompressOptions uncompressOptions = UncompressOptions.None) { throw new PBException("not implemented"); }
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); } }
public abstract IEnumerable <string> Uncompress(string compressFile, string directory, IEnumerable <CompressFile> selectedFiles, UncompressOptions uncompressOptions = UncompressOptions.None);
public abstract IEnumerable<string> Uncompress(string compressFile, string directory, IEnumerable<CompressFile> selectedFiles, UncompressOptions uncompressOptions = UncompressOptions.None);
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)); } }
public override IEnumerable <string> Uncompress(string compressFile, string directory, IEnumerable <CompressFile> selectedFiles, UncompressOptions uncompressOptions = UncompressOptions.None) { return(ZipArchive.Unzip(compressFile, directory, selectedFiles, uncompressOptions)); }
private void SetUnzipOptions(UncompressOptions options) { _extractFullPath = (options & UncompressOptions.ExtractFullPath) == UncompressOptions.ExtractFullPath; _overrideExistingFile = (options & UncompressOptions.OverrideExistingFile) == UncompressOptions.OverrideExistingFile; _renameExistingFile = (options & UncompressOptions.RenameExistingFile) == UncompressOptions.RenameExistingFile; }
// 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 }; }
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()); }
public override IEnumerable <string> Uncompress(string compressFile, string directory, IEnumerable <CompressFile> selectedFiles, UncompressOptions uncompressOptions = UncompressOptions.None) { throw new PBException("not implemented"); }
// 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)); }