0

SevenZipSharp用来压缩我的文件和目录。

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

var searchPattern = "*.txt";
compressor.CompressDirectory(directory, archiveName, password, searchPattern, recursion);

现在,我想通过更复杂的 SearchPattern 过滤目录文件,如下所示:

var searchPattern = "*.txt && *.xml";
compressor.CompressDirectory(directory, archiveName, password, searchPattern, recursion);

在这种情况下,我得到:

指数数组的边界之外

有没有办法做到这一点SearchPattern?如果否,我该怎么做?

4

1 回答 1

0

答案是否定的,你不能用SearchPattern.


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

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
        ...
        }

SevenZipSharp 在内部调用Directory.GetFiles,它不支持多个掩码。


所以你有几种选择:

  • 一个一个压缩扩展名(第一次创建存档,然后将文件添加到目录中)
  • 创建另一个管理多个扩展(正则表达式?)的重载并为项目做出贡献
于 2015-06-05T14:57:03.687 回答