gpt4 book ai didi

C# 归档中的文件列表

转载 作者:行者123 更新时间:2023-11-30 16:32:24 24 4
gpt4 key购买 nike

我正在创建一个 FileFinder 类,您可以在其中进行如下搜索:

    var fileFinder = new FileFinder(
new string[]
{
"C:\\MyFolder1",
"C:\\MyFolder2"
},
new string[]
{
"*.txt",
"*.doc"
} );
fileFinder.FileFound += new EventHandler<FileFinderEventArgs>(FileFinder_FileFound);
DoSearch();

如果我执行该代码,每次在 中找到 *.txt*.doc 文件时都会调用 FileFinder_FileFound >C:\\MyFolder1 及其子文件夹,或 C:\\MyFolder2 及其子文件夹。

因此类会查看子文件夹,但我也希望它能查看它遇到的任何 zip 文件,就好像它们是文件夹一样。我怎样才能做到这一点?最好不要创建临时文件...

编辑 忘了说这不是个人项目;它用于我正在与我的公司合作的商业应用程序。

最佳答案

如果您可以使用 .NET 4.5 或更高版本,您现在终于可以使用 ZipArchive。它位于 System.IO.Compression 命名空间中。该示例也使用了 ZipFile 类,这不仅需要引用 System.IO.Compression 程序集,还需要引用 System.IO.Compression.FileSystem 程序集(两者都贡献于同一个命名空间)。MSDN:http://msdn.microsoft.com/en-us/library/system.io.compression.ziparchive%28v=vs.110%29.aspx

因此,如果您的查找器遇到一个 zip 文件,您可以这样做(要点):

using System;
using System.IO;
using System.IO.Compression;

using (ZipArchive archive = ZipFile.OpenRead(zipFilePath))
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
if (entry.FullName.EndsWith(".txt", StringComparison.OrdinalIgnoreCase) ||
entry.FullName.EndsWith(".doc", StringComparison.OrdinalIgnoreCase))
{
// FileFinder_FileFound(new FileFinderEventArgs(...))
}
}
}

关于C# 归档中的文件列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4069092/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com