gpt4 book ai didi

c# - 过滤多种文件类型

转载 作者:太空宇宙 更新时间:2023-11-03 11:46:47 25 4
gpt4 key购买 nike

如何使用 GetFiles 函数来过滤两种(或更多)文件类型?

我目前使用的代码如下:

            folderlabel1.Text = folderBrowserDialog1.SelectedPath; //store 
string extensions = "*.bsc>*.bs2";
string[] filterSplit = extensions.Split('>');
int filtercount = filterSplit.Length;
int count = 0;
listBox1.Items.Clear();
folder1 = new DirectoryInfo(Path.GetFullPath(@folderlabel1.Text));
for (count = 0; count < filtercount; count++)
{
fileEntries1 = folder1.GetFiles(filterSplit[count], SearchOption.AllDirectories);
}
foreach (FileInfo x in fileEntries1)
{
listBox1.Items.Add(x); //...add to folder display
}

所以我试图过滤掉 *.bsc 和 *.bs2 文件类型...但很明显,这里完成的方式只会将第二种文件类型的文件复制到数组中的第一种文件类型上.我在想:1.如果有更好的方法来做到这一点2. 如何将一个数组的内容添加到另一个数组的末尾?这可能吗? (因为然后使用这种方法,我会将文件存储在一个数组中,然后将它们添加到另一个数组中,而不是不断地覆盖一个数组)

最佳答案

您可以使用 SelectMany针对您的 filterSplit 数组的扩展方法,以获取每个给定扩展名的文件。

var fileEntries1 = filterSplit.SelectMany(filter => folder1.GetFiles(filter, SearchOption.AllDirectories));

这将创建一个 IEnumerable<FileInfo>然后您可以使用它来分配给您的列表框。

对于非 LINQ 方法,您可以使用 List<FileInfo>AddRange foreach 内部的方法针对数组。

List<FileInfo> fileInfos = new List<FileInfo>();

foreach (string filter in filterSplit)
{
fileInfos.AddRange(folder1.GetFiles(filter, SearchOption.AllDirectories));
}

关于c# - 过滤多种文件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3200287/

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