コード例 #1
0
 public static FileInfo Decompress(this FileInfo inputFile,
                                   FileInfo outputFile,
                                   int lockWaitMs = 60000,
                                   ExistingFileHandling onExisting = ExistingFileHandling.PreserveExisting,
                                   int bufferSize = 4096)
 {
     return(GZip(inputFile, outputFile, GZipType.Decompress, lockWaitMs, onExisting, bufferSize));
 }
コード例 #2
0
        public void CanEnumerateDecompressFile_Test02_True(ExistingFileHandling handling)
        {
            /* Arrange */
            var gotInput = m_Fixture.sutInputFileInfo02;
            var got      = m_Fixture.sutOutputFileInfo02;

            /* Act */
            output.WriteLine("File already exists:{0}", got.Exists);
            got = gotInput.Decompress(got, onExisting: handling);

            /* Assert */
            output.WriteLine("File created:{0}", got?.FullName);
            Assert.True(got.Exists, $"{TestConstants.CANNOT_FIND_FILE_MSG} {got.FullName}");
            Assert.True(got.Length == m_Fixture.sutControlOutputFileInfo02.Length);
        }
コード例 #3
0
        public static FileInfo GZip(this FileInfo inputFile,
                                    FileInfo outputFile,
                                    GZipType compressionMode,
                                    int lockWaitMs = 60000,
                                    ExistingFileHandling onExisting = ExistingFileHandling.PreserveExisting,
                                    int bufferSize = 4096)
        {
            VerifyFileParams(inputFile, outputFile);
            FileInfo m_OutputFileInfo = EnsureOutputDirectory(inputFile, outputFile);

            if (inputFile.FullName.Equals(m_OutputFileInfo.FullName, StringComparison.InvariantCultureIgnoreCase))
            {
                throw new IOException($"{nameof(inputFile)} ({inputFile.FullName}) and {nameof(outputFile)} ({m_OutputFileInfo.FullName}) cannot be the same!");
            }

            if (m_OutputFileInfo.Exists)
            {
                switch (onExisting)
                {
                case ExistingFileHandling.PreserveExisting:
                    return(m_OutputFileInfo);

                case ExistingFileHandling.Overwrite:
                    m_OutputFileInfo.Delete();
                    break;

                case ExistingFileHandling.ReplaceAndArchive:
                    var m_arcFile = GetArchiveFullName(m_OutputFileInfo);
                    if (!File.Exists(m_arcFile))
                    {
                        File.Move(m_OutputFileInfo.FullName, m_arcFile);
                    }
                    else
                    {
                        m_OutputFileInfo.Delete(); /* may no longer be numerically possible needs validation */
                    }
                    break;

                default:
                    throw new IOException(IoConstants.FILE_EXISTS_ERROR_MSG);
                }
            }
            if (compressionMode == GZipType.Compress)
            {
                return(ExecuteCompress(inputFile, m_OutputFileInfo, bufferSize, lockWaitMs));
            }
            return(ExecuteDecompress(inputFile, outputFile, bufferSize, lockWaitMs));
        }
コード例 #4
0
        public void CanEnumerateGzipFile_Test01_True(ExistingFileHandling handling)
        {
            /* Arrange */
            var sutFilePath       = Path.Combine(Environment.CurrentDirectory, TestConstants.INPUT_FILE_01_PATH);
            var sutOutputFilePath = Path.Combine(Environment.CurrentDirectory, TestConstants.OUTPUT_FILE_01_PATH);
            var gotInput          = new FileInfo(sutFilePath);
            var got = new FileInfo(sutOutputFilePath);

            /* Act */
            output.WriteLine("File already exists:{0}", got.Exists);
            got = gotInput.Compress(got, 60000, handling);

            /* Assert */
            output.WriteLine("File created:{0}", got?.FullName);
            Assert.True(got.Exists, $"{TestConstants.CANNOT_FIND_FILE_MSG} {got.FullName}");
        }
コード例 #5
0
 private static void HandleCompressCommand(FileInfo input,
                                           FileInfo output,
                                           int lockms = 60000,
                                           ExistingFileHandling filehandling = ExistingFileHandling.PreserveExisting,
                                           int buffersize = 4096)
 {
     try
     {
         input.Compress(output, lockms, filehandling, buffersize);
         Console.WriteLine($"Compression Complete! {output.FullName}");
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
     }
 }