Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SevenZipSharp中的SearchPattern包含多个搜索模式_C#_Sevenzipsharp - Fatal编程技术网

C# SevenZipSharp中的SearchPattern包含多个搜索模式

C# SevenZipSharp中的SearchPattern包含多个搜索模式,c#,sevenzipsharp,C#,Sevenzipsharp,我使用SevenZipSharp压缩我的文件和目录 我使用了以下代码,它运行良好: var searchPattern = "*.txt"; compressor.CompressDirectory(directory, archiveName, password, searchPattern, recursion); 现在,我想用更复杂的搜索模式过滤目录文件,如下所示: var searchPattern = "*.txt && *.xml"; compressor.Comp

我使用SevenZipSharp压缩我的文件和目录

我使用了以下代码,它运行良好:

var searchPattern = "*.txt";
compressor.CompressDirectory(directory, archiveName, password, searchPattern, recursion);
现在,我想用更复杂的搜索模式过滤目录文件,如下所示:

var searchPattern = "*.txt && *.xml";
compressor.CompressDirectory(directory, archiveName, password, searchPattern, recursion);
在这种情况下,我得到:

索引超出了数组的边界

有没有办法通过SearchPattern实现这一点?
如果没有,我该怎么做?

答案是没有,您不能使用SearchPattern进行此操作

正如您在源代码中看到的:

在内部,SevenZipSharp调用不支持多个掩码

所以你有几种选择:

在第一次创建归档文件时,逐个压缩扩展名,然后将文件添加到目录中 创建另一个重载来管理多个扩展正则表达式?并为项目做出贡献
public void CompressDirectory(
            string directory, Stream archiveStream,
            string password = "", string searchPattern = "*", bool recursion = true)
        {
        ...
#if CS4
            files.AddRange((new DirectoryInfo(directory)).GetFiles(searchPattern).Select(fi => fi.FullName));
#else
            foreach (FileInfo fi in (new DirectoryInfo(directory)).GetFiles(searchPattern))
            {
                files.Add(fi.FullName);
            }
#endif
        ...
        }