我需要过滤掉整台电脑,只找到 .sto 文件。我希望这些文件显示在列表框中。我需要它们像这样显示:“text.sto”。我正在使用 Visual C# Express。我怎么做?
问问题
708 次
2 回答
2
确保在代码文件的顶部有这个 using 指令:
using System.IO;
使用此方法获取目录:
string[] dirs = Directory.GetFiles(@"c:\", "*.sto", SearchOption.AllDirectories);
它需要第二个参数,允许您过滤结果。可以在此处找到有关该方法的更多信息:http: //msdn.microsoft.com/en-us/library/ms143316.aspx
如果您不想为此使用内置的 .Net 函数(因为它可能会引发访问错误并且不提供任何结果),这里有一个问题的答案,显示了以不同的方式进行操作:https ://stackoverflow.com /a/929418/184746
参考上述文章,这里有一个方法可以捕获并且不会给您添加为 *.sto 的过滤错误:
public static IEnumerable<string> GetFiles(string path)
{
Queue<string> queue = new Queue<string>();
queue.Enqueue(path);
while (queue.Count > 0)
{
path = queue.Dequeue();
try
{
foreach (string subDir in Directory.GetDirectories(path))
{
queue.Enqueue(subDir);
}
}
catch (Exception ex)
{
Console.Error.WriteLine(ex);
}
string[] files = null;
try
{
files = (from f in Directory.GetFiles(path)
where f.EndsWith(".sto")
select f).ToArray();
}
catch (Exception ex)
{
Console.Error.WriteLine(ex);
}
if (files != null)
{
foreach (string t in files)
{
yield return t;
}
}
}
}
你可以像这样使用它:
string[] dirs = GetFiles(@"c:\").ToArray();
之后,在设计器中创建一个列表框,并遍历并添加项目
foreach(var f in dirs)
{
listBox1.Items.Add(String.Format("\"{0}\"", f));
}
出于好奇,您在研究这个时的搜索参数是什么?因为一个简单的谷歌搜索揭示了你所需要的一切:"get list of files C#"
https ://www.google.ca/search?sourceid=chrome&ie=UTF-8&q=get+list+of+files+C%23
于 2012-05-16T16:52:54.457 回答
0
一种搜索sto
文件的解决方案,但我不能说它有多快
string[] filePaths = Directory.GetFiles(@"c:\",
"*.sto",
SearchOption.AllDirectories);
于 2012-05-16T16:53:09.673 回答