public bool IsSupportedFile(string localFilename) { try { var ze = new ZipEngine(); using (var zipFile = File.OpenRead(localFilename)) { return(ze.IsArchive(zipFile)); } } catch { } return(false); }
public void ZipBadPackStreamContexts() { string[] testFiles = new string[] { "test.txt" }; CompressionTestUtil.GenerateRandomFile(testFiles[0], 0, 20000); using (ZipEngine zipEngine = new ZipEngine()) { zipEngine.CompressionLevel = CompressionLevel.None; CompressionTestUtil.TestBadPackStreamContexts(zipEngine, "test.zip", testFiles); } }
public void ZipEngineNullParams() { string[] testFiles = new string[] { "test.txt" }; ArchiveFileStreamContext streamContext = new ArchiveFileStreamContext("test.zip", null, null); using (ZipEngine zipEngine = new ZipEngine()) { zipEngine.CompressionLevel = CompressionLevel.None; CompressionTestUtil.TestCompressionEngineNullParams(zipEngine, streamContext, testFiles); } }
public void ZipBadUnpackStreamContexts() { int txtSize = 40960; ZipInfo zipInfo = new ZipInfo("test2.zip"); CompressionTestUtil.GenerateRandomFile("ziptest-0.txt", 0, txtSize); CompressionTestUtil.GenerateRandomFile("ziptest-1.txt", 1, txtSize); zipInfo.PackFiles(null, new string[] { "ziptest-0.txt", "ziptest-1.txt" }, null); using (ZipEngine zipEngine = new ZipEngine()) { CompressionTestUtil.TestBadUnpackStreamContexts(zipEngine, "test2.zip"); } }
public void CreateKMZ() { ZipEngine zip = new ZipEngine(); List<Mohid.Files.FileInfo> files = new List<Mohid.Files.FileInfo>(); ChangeList.Add("<<name>>", null); FileTools.FindFiles(ref files, SearchPath, ImageExtension, true, null); foreach (Mohid.Files.FileInfo image_file in files) { if (string.IsNullOrWhiteSpace(KMZOutput.FullName)) KMZOutput.FullName = image_file.FileName.Name + ".kmz"; else KMZOutput.Extension = "kmz"; if (Regex.IsMatch(image_file.FileName.FullName, ImageFileNameMask)) { if (OverwriteKMZ == CopyOptions.IGNORE) if (File.Exists(KMZOutput.FullPath)) continue; if (ChangeTemplate) { ChangeList["<<name>>"] = image_file.FileName.Name; TextFile.Replace(KMLTemplate.FullPath, KMLOutput.FullPath, ref ChangeList); } else FileTools.CopyFile(KMLTemplate, KMLOutput, CopyOptions.OVERWRIGHT); zip.AddFile(SearchPath.Path + image_file.FileName.FullName, KMZImageFolder.Path); zip.AddFile(KMLOutput.FullPath, ""); zip.SaveZipToFile(KMZOutput); zip.ClearList(); } } }
public bool IsSupportedFile(string localFilename) { try { var ze = new ZipEngine(); using (var zipFile = File.OpenRead(localFilename)) { return ze.IsArchive(zipFile); } } catch { } return false; }
private IList <ArchiveFileInfo> RunZipPackUnpack(int fileCount, long fileSize, long maxArchiveSize, CompressionLevel compLevel) { Console.WriteLine("Creating zip archive with {0} files of size {1}", fileCount, fileSize); Console.WriteLine("MaxArchiveSize={0}, CompressionLevel={1}", maxArchiveSize, compLevel); string dirA = String.Format("{0}-{1}-A", fileCount, fileSize); if (Directory.Exists(dirA)) { Directory.Delete(dirA, true); } Directory.CreateDirectory(dirA); string dirB = String.Format("{0}-{1}-B", fileCount, fileSize); if (Directory.Exists(dirB)) { Directory.Delete(dirB, true); } Directory.CreateDirectory(dirB); string[] files = new string[fileCount]; for (int iFile = 0; iFile < fileCount; iFile++) { files[iFile] = TEST_FILENAME_PREFIX + iFile + ".txt"; CompressionTestUtil.GenerateRandomFile(Path.Combine(dirA, files[iFile]), iFile, fileSize); } string[] archiveNames = new string[1000]; for (int i = 0; i < archiveNames.Length; i++) { if (i < 100) { archiveNames[i] = String.Format( (i == 0 ? "{0}-{1}.zip" : "{0}-{1}.z{2:d02}"), fileCount, fileSize, i); } else { archiveNames[i] = String.Format( "{0}-{1}.{2:d03}", fileCount, fileSize, i); } } string progressTextFile = String.Format("progress_{0}-{1}.txt", fileCount, fileSize); CompressionTestUtil testUtil = new CompressionTestUtil(progressTextFile); IList <ArchiveFileInfo> fileInfo; using (ZipEngine zipEngine = new ZipEngine()) { zipEngine.CompressionLevel = compLevel; File.AppendAllText(progressTextFile, "\r\n\r\n====================================================\r\nCREATE\r\n\r\n"); zipEngine.Progress += testUtil.PrintArchiveProgress; OptionStreamContext streamContext = new OptionStreamContext(archiveNames, dirA, null); streamContext.OptionHandler = delegate(string optionName, object[] parameters) { // For testing purposes, force zip64 for only moderately large files. switch (optionName) { case "forceZip64": return(fileSize > UInt16.MaxValue); default: return(null); } }; zipEngine.Pack(streamContext, files, maxArchiveSize); string checkArchiveName = archiveNames[0]; if (File.Exists(archiveNames[1])) { checkArchiveName = archiveNames[1]; } using (Stream archiveStream = File.OpenRead(checkArchiveName)) { bool isArchive = zipEngine.IsArchive(archiveStream); Assert.IsTrue(isArchive, "Checking that created archive appears valid."); } IList <string> createdArchiveNames = new List <string>(archiveNames.Length); for (int i = 0; i < archiveNames.Length; i++) { if (File.Exists(archiveNames[i])) { createdArchiveNames.Add(archiveNames[i]); } else { break; } } Assert.AreNotEqual <int>(0, createdArchiveNames.Count); Console.WriteLine("Listing zip archive with {0} files of size {1}", fileCount, fileSize); File.AppendAllText(progressTextFile, "\r\n\r\nLIST\r\n\r\n"); fileInfo = zipEngine.GetFileInfo( new ArchiveFileStreamContext(createdArchiveNames, null, null), null); Assert.AreEqual <int>(fileCount, fileInfo.Count); Console.WriteLine("Extracting zip archive with {0} files of size {1}", fileCount, fileSize); File.AppendAllText(progressTextFile, "\r\n\r\nEXTRACT\r\n\r\n"); zipEngine.Unpack(new ArchiveFileStreamContext(createdArchiveNames, dirB, null), null); } bool directoryMatch = CompressionTestUtil.CompareDirectories(dirA, dirB); Assert.IsTrue(directoryMatch, "Testing whether zip output directory matches input directory."); return(fileInfo); }