Search code examples
c#zipcompressionc#-ziparchive

FIND A SPECIFIC FILE IN A FOLDER "C:\TEST" THAT CONTAINS MULTIPLE ARCHIVES ".ZIP" USING C#


I have a folder "c:\test" which contains multiple archives. How do I search through all the archives in this folder for a specific file.

This only search a particular archive using ZipPath:

    private void button1_Click(object sender, EventArgs e)
    {
        string zipPath = @"C:\Test\archive1.zip";
        string filetosearch = "testfile";
        using (ZipArchive archive = ZipFile.OpenRead(zipPath))
        {
            foreach (ZipArchiveEntry entry in archive.Entries)
            {
                var position = entry.Name.IndexOf(filetosearch , StringComparison.InvariantCultureIgnoreCase);
                if (position > -1)
                {
                    listView1.Items.Add(entry.Name);
                }
            }
        }
    }

Is it possible to search all the archives in this folder i.e archive1 to archive70


Solution

  • You can use the following code:

    foreach(var zipPath in Directory.GetFiles("C:\\Test"))
    {
        using (ZipArchive archive = ZipFile.OpenRead(zipPath))
        {
            foreach (ZipArchiveEntry entry in archive.Entries)
            {
                var position = entry.Name.IndexOf(filetosearch , StringComparison.InvariantCultureIgnoreCase);
                if (position > -1)
                {
                    listView1.Items.Add(entry.Name);
                }
            }
        }
    }
    

    The code gets all the files in the directory and iterates through them. If you need to filter the files by extension you can check it inside the foreach loop.