使用 C# 在包含多个存档“.ZIP”的文件夹 "C:\TEST" 中查找特定文件

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

我有一个包含多个存档的文件夹“c:\test”。如何搜索此文件夹中的所有档案以查找特定文件。

这仅使用 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);
                }
            }
        }
    }

是否可以搜索此文件夹中的所有档案,即 archive1archive70

您可以使用以下代码:

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);
            }
        }
    }
}

代码获取目录中的所有文件并遍历它们。如果您需要按扩展名过滤文件,您可以在 foreach 循环中检查它。

您可能想要类似

的东西
string[] filePaths = Directory.GetFiles(@"c:\Test\", "*.zip")

然后把你的点击代码改成

foreach(var filePath in filePaths){
    //your code here for each path
}

您可以使用以下代码

        string[] filePaths = Directory.GetFiles(@"c:\test", "*.zip");
        string filetosearch = "testfile";
        foreach (var item in filePaths)
        {
            string name = Path.GetFileName(item);
            if (name.IndexOf(filetosearch, StringComparison.InvariantCultureIgnoreCase) != -1)
            {
                //item is path of that file
            }
        }