Question

This is the methos im using for compress files:

private void Compressions(string zipFile,string sources)
        {
            try
            {
                string zipFileName = zipFile;
                string source = sources;
                string output = @"c:\temp";
                string programFilesX86 = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFilesX86) + "\\Diagnostic Tool\\7z.dll";
                if (File.Exists(programFilesX86))
                {
                    SevenZipExtractor.SetLibraryPath(programFilesX86);
                }
                else
                {
                    string path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + "\\7z.dll";
                    SevenZipExtractor.SetLibraryPath(path);
                }
                string programFiles = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFiles) + "\\Diagnostic Tool\\7z.dll";
                if (File.Exists(programFiles))
                {
                    SevenZipExtractor.SetLibraryPath(programFiles);
                }
                else
                {
                    if (File.Exists(programFilesX86))
                    {
                        SevenZipExtractor.SetLibraryPath(programFilesX86);
                    }
                    else
                    {
                        string path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + "\\7z.dll";
                        SevenZipExtractor.SetLibraryPath(path);
                    }
                }
                SevenZipCompressor compressor = new SevenZipCompressor();
                compressor.ArchiveFormat = OutArchiveFormat.Zip;
                compressor.CompressionMode = CompressionMode.Create;
                compressor.TempFolderPath = System.IO.Path.GetTempPath();
                string t = Path.Combine(output, zipFileName);
                compressor.CompressDirectory(source, t,"*.txt");
                this.explorerWindow = Process.Start("explorer", String.Format("/select,{0}", t));
                this.TopMost = true;
            }
            catch (Exception err)
            {
                Logger.Write("Zip file error: " + err.ToString());
            }
        }

This is the line that compress:

compressor.CompressDirectory(source, t,"*.txt");

I tried to add "*.txt" so it will compress only text files but its compressing many other formats.

When im doing: compressor.CompressDirectory(source, t, The message say: string searchPattern

I want to compress only text files.

Edit** The problem is that its compressing any type of files and not only text files ! The search pattern "*.txt" is not working instead compressing only text files its compressing any files extentions.

Was it helpful?

Solution

Please check the method's signature and ensure you are calling the correct overload.

The three string parameter overload is defined as:

public void CompressDirectory(
        string directory, string archiveName, 
        string password)

Your code isn't providing a search pattern, it's setting a password of '*.txt'

Use one of the overloads that accepts a search pattern, eg:

public void CompressDirectory(
        string directory, string archiveName,
        string searchPattern, bool recursion)

or

public void CompressDirectory(
        string directory, string archiveName,
        string password = "", string searchPattern = "*", bool recursion = true)
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top