public bool IsSupportedFile(string localFilename)
 {
     try {
         var ze = new ZipEngine();
         using (var zipFile = File.OpenRead(localFilename)) {
             return(ze.IsArchive(zipFile));
         }
     } catch {
     }
     return(false);
 }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        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");
            }
        }
Beispiel #5
0
            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();
                   }
                }
            }
Beispiel #6
0
 public bool IsSupportedFile(string localFilename) {
     try {
         var ze = new ZipEngine();
         using (var zipFile = File.OpenRead(localFilename)) {
             return ze.IsArchive(zipFile);
         }
     } catch {
     }
     return false;
 }
Beispiel #7
0
        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);
        }